【问题标题】:What's the difference between unauthorized_client and access_denied未授权客户端和访问拒绝有什么区别
【发布时间】:2016-10-28 00:49:21
【问题描述】:

我正在阅读oauth2 specs,但我对unauthorized_clientaccess_denied 错误代码感到困惑。它们似乎表达了相同的错误条件,不是吗?乍一看(通过错误代码),我认为一个是身份验证失败,另一个是授权失败,但它们实际上都是关于授权失败,这将转换为 http 403 状态代码。

 unauthorized_client
       The client is not authorized to request an access token
       using this method.

 access_denied
       The resource owner or authorization server denied the
       request.

【问题讨论】:

  • unauthorized_client 在您的 clientId 和 clientSecret 不匹配时出现。当您是合法用户但无权执行某些操作时,会出现 access_denied。
  • 凭证(clientId 和 clientSecret)不匹配时不应该是身份验证错误吗?为什么会是未授权的_client?该描述还说“客户端无权请求访问令牌”并不是说客户端和秘密是错误的。顺便说一句,凭据不匹配存在特定错误:invalid_grant - The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or or was issued to another client
  • 我发现的问题是这里的术语:在 OAuth 2.0 中,“客户端”是您的应用程序。用户被称为“资源所有者”......对于不阅读 RFC 的人来说很困惑......

标签: oauth2 rfc6749


【解决方案1】:

unauthorized_client: 实际上,这个错误可能会出现:

  • 如果客户端请求的范围是不允许的
  • 假设您要刷新令牌流,但服务器上的客户端配置不允许这样做。
  • 类似的用例,其中客户端尝试执行 Authz 服务器上的客户端配置不允许执行的操作 现在上述问题发生在客户端故障。

access_denied 如果您的客户没有问题,则可能会发生这种情况,但

  • 资源所有者取消了 OAuth 流程(例如,当您的某些客户点击 google 时,会出现一个同意页面,其中 Use 可以允许或拒绝访问)

  • 如果资源服务器出于某种原因认为不应授予该客户端访问权限

如您所见,access_denied 是由资源所有者或服务器引起的,而不是由于客户端引起的

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2020-04-05
    • 2016-09-29
    • 2018-12-01
    • 2016-01-31
    • 2017-03-14
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 2016-03-16
    相关资源
    最近更新 更多