为什么 OAuth 客户端凭据授予不应在响应中包含刷新令牌?

问题描述 投票:0回答:1

我正在使用 API 网关专有工具,对于注册的应用程序,我们可以允许它们使用 OAuth2 客户端凭据授予来访问 REST 资源。

当然,我们可以假设客户端是机密,并且我们强制使用机密传输(https),但客户端仍然需要始终使用凭据(client_id + client_secret)来获取新的访问令牌。

为什么访问令牌响应不应包含刷新令牌?

不应包含刷新令牌。

如下所示,客户端获得访问令牌后该阶段的实际工作流程非常相似。

客户凭证授予

具有刷新令牌流程的授权

oauth token refresh-token
1个回答
0
投票

按部分划分:

  • 为什么我们使用刷新令牌?它用于防止资源所有者(最终用户)重新输入其凭据。刷新令牌是客户端代表资源所有者(用户)持有的临时凭证。

刷新令牌是用于获取访问令牌的凭证。 参考

  • 如何使用刷新令牌?客户端应用程序将刷新令牌连同其客户端凭据(客户端必须使用客户端密钥和客户端进行身份验证)发送到授权服务器,以便接收新的访问令牌。

客户端通过向授权服务器进行身份验证并提供刷新令牌来请求新的访问令牌。客户端身份验证要求基于客户端类型和授权服务器策略。 参考

  • 客户凭证授予会发生什么?每次需要新的访问令牌时,客户端只需向资源服务器进行身份验证(发送客户端密钥和客户端 ID)并立即获取访问令牌。

  • 为什么客户端凭证不应返回刷新令牌?因为这样会很暧昧。正如之前授权授予所述,一旦客户端想要使用刷新令牌,它仍然需要发送其凭据。

真正改变的是理念。实际上,客户端充当资源所有者。它不代表第三方工作,也不管理潜在的)多个资源所有者。

当授权范围仅限于客户端控制下的受保护资源时,客户端凭据(或其他形式的客户端身份验证)可用作授权授予参考 具有刷新令牌的授权授予多个资源所有者

客户凭证授予

资源所有者密码凭证授予

请注意,资源所有者密码凭证授予也可以使用刷新令牌机制。这样可以避免强制资源所有者重新进行身份验证。

© www.soinside.com 2019 - 2024. All rights reserved.