【问题标题】:Why is redirect_uri required on Access Token request?为什么访问令牌请求需要redirect_uri?
【发布时间】:2016-10-06 03:57:47
【问题描述】:

我正在开发一个基于rfc6749 的oauth2 提供程序,我想知道,为什么Access Token Request 需要redirect_uri? /token 端点没有重定向,并且假定状态已经过验证(即针对 CSRF),因此 redirectURI 的副本对我来说没有多大意义。

【问题讨论】:

    标签: oauth-2.0 oauth2 rfc6749


    【解决方案1】:

    在身份验证代码流中,它用于验证第一个身份验证请求中的redirect_uri。 https://www.oauth.com/oauth2-servers/redirect-uris/redirect-uri-validation/

    授予访问令牌

    令牌端点将收到交换授权的请求 访问令牌的代码。此请求将包含一个重定向 URL,如 以及授权码。作为额外的安全措施, 服务器应验证此请求中的重定向 URL 是否匹配 正是初始中包含的重定向 URL 此授权码的授权请求。如果重定向 URL 不匹配,服务器拒绝请求并出错。

    【讨论】:

    • 这确实违反直觉,但可能非常重要。我在一个项目中重构了一个 OAuth2 使用者,结果东西坏了,花费了数小时的调试时间。同时,我高度怀疑额外支票的安全价值。假设 OAuth 代码(不可暴力破解)被泄露是因为有人复制粘贴了整个 URL,那么 redirect_uri 不是也泄露了吗??
    【解决方案2】:

    这里讨论了同样的问题:https://security.stackexchange.com/questions/44214/what-is-the-purpose-of-oauth-2-0-redirect-uri-checking

    The best response imho is vinod one 即。在使用灵活的 redirect_uri(使用通配符)时减少表面攻击

    【讨论】:

      【解决方案3】:

      在以下情况下需要重定向 URI 1. 授权代码流程,服务器使用代码重定向到重定向URI,例如对授权请求的示例响应是:

      HTTP/1.1 302 Found
      Location: https://client.example.com/cb?code=SplxlOBeZQQYbYS6WxSbIA
                 &state=xyz
      

      Authz 代码流的错误响应也是如此:

      HTTP/1.1 302 Found
      Location: https://client.example.com/cb?error=access_denied&state=xyz
      

      同样在隐式授权的情况下,服务器将哈希“#”片段中的访问令牌返回到请求中提供的重定向 URI

      【讨论】:

        猜你喜欢
        • 2011-02-22
        • 2023-03-23
        • 1970-01-01
        • 2012-03-12
        • 2013-05-22
        • 2017-01-18
        • 2011-10-11
        • 2021-07-29
        • 1970-01-01
        相关资源
        最近更新 更多