【问题标题】:OAuth 2: authorization_code Grant - Is client_secret param neccesary?OAuth2:authorization_code Grant - client_secret 参数是否必要?
【发布时间】:2018-07-31 10:32:01
【问题描述】:

关于 OAuth 2.0,我之前的理解是 client_secret 应该用于授权代码授权,这应该是“更安全”(这里的一些教程需要 client_secret 1 2)

但是我在使用授权码时看到了library ,如果没有提供,兄弟没有检查client_secret。这让我想知道 client_secret 的用法并深入研究 OAuth2 的规范。

然后我查看了 OAuth 2 (https://www.rfc-editor.org/rfc/rfc6749#section-4.1) 的 RFC,发现 client_secret 根本不需要授权代码授权流程。

如果您向下滚动到授权代码流https://www.rfc-editor.org/rfc/rfc6749#section-4.1.1 所需的参数,您会看到甚至没有提及 client_secret

所以我的问题是:

  • authorization_code 授权类型是否需要 client_secret
  • 如果建议使用 client_secret 而不是必需,是否会有任何官方文档告诉我们建议使用 client_secret

谢谢!

【问题讨论】:

    标签: oauth-2.0


    【解决方案1】:

    问得好,也是我觉得 OAuth2.0 最烦人的事情之一 - 了解公共客户端周围的安全协议。

    尽我所能回答您的问题:-

    authorization_code 授权类型是否需要 client_secret?

    没有。如果客户端是公共客户端,那么应该允许它使用这种授权类型而无需对其自身进行身份验证(前提是它注册了一个重定向端点)。问题是似乎有几个 OAuth2.0 服务器的实现不允许公共客户端使用这种授权类型。

    如果建议使用 client_secret 而不是 required,将 有任何官方文档告诉我们 client_secret 是 推荐?

    您可能需要查看您使用的实际 OAuth2.0 提供程序的文档,而不是通用的 IETF 规范,因为它们可能会针对 RFC 之外的公共客户端指定规则。

    6749 RFC 几乎只是说 Auth 服务器应该处理公共客户端更不安全的事实,但没有给出具体的具体细节。

    例如部分10.1 说:

     The authorization server must consider the security implications of
       interacting with unauthenticated clients and take measures to limit
       the potential exposure of other credentials (e.g., refresh tokens)
       issued to such clients.
    

    【讨论】:

    • 奇怪的是,如此流行的协议对安全性的定义如此松散......感谢您的回答和解释!
    猜你喜欢
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 2012-04-02
    • 2013-06-25
    相关资源
    最近更新 更多