我应该在哪里存储刷新令牌

信息安全 oauth 证书
2021-09-06 13:24:15

我正在构建一个 oauth 2.0 协议。我想知道刷新令牌是如何工作的。

我的理解是刷新令牌的使用启用了短期访问令牌,因此限制了这些访问令牌的漏洞。到目前为止很棒。一旦访问令牌过期,您就会以某种方式使用刷新令牌来获取新的访问令牌。

我想知道最后一部分是如何发生的(不会通过注销来中断用户流程):

  • 为了确保交易安全,是否需要将应用程序 ID 和应用程序密码与刷新令牌一起发送,以确保请求者的身份?
    • 如果是这样,听起来您不想在客户端(网络或移动应用程序或其他)上存储应用程序机密,那么如何在不注销用户的情况下做到这一点?
    • 如果不是,如果您不能使用刷新令牌来验证请求者身份,那么刷新令牌的意义何在?可以将刷新令牌存储在客户端中吗?
1个回答

破坏刷新令牌会比破坏访问令牌造成更大的危害。

您可以使用各种技术使其更安全。

您可以通过了解为“OAuth 2.0 授权框架”推荐的一种标准技术来了解这个想法。请参考RFC

您可以通过维护单独的资源服务器和授权服务器来分离访问和授权的关注点。您只能使用访问令牌(而不是刷新令牌)来访问资源。您只能使用刷新令牌(而不是访问令牌)与授权服务器进行通信。这降低了刷新令牌被泄露的风险。

其次,更容易检测刷新令牌是否被泄露。假设包含一个刷新令牌并用于生成新的访问令牌。一旦这个刷新令牌被撤销,所有已经生成的访问令牌和后者都将失效。因此,只有一方能够使用使用单个有效刷新令牌生成的访问令牌来访问资源。如果多个用户参与,他们将继续互相无效。在刷新令牌妥协的过程中检测变得容易。

在此处输入图像描述