OAuth 2:authorization_code Grant-是否需要client_secret参数



关于OAuth 2.0,我之前的理解是client_secret应该用于authorization_code grant,它应该是"更安全";(这里的一些教程需要client_secret 12(

然而,我在使用authorization_code时看到了一个库,如果没有提供,我不会检查client_secret。这让我想知道client_secret的用法,并深入了解OAuth2的规范。

然后我查看了OAuth 2的RFC(https://www.rfc-editor.org/rfc/rfc6749#section-4.1(,并发现authorization_code grant流根本不需要client_secret

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

所以我的问题是:

  • authorization_code grant类型是否需要client_secret
  • 如果建议使用client_secret而不是必需的,是否有任何官方文档告诉我们建议使用client-secret

谢谢!

这个问题很好,也是我对OAuth2.0最讨厌的事情之一——理解公共客户端的安全协议。

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

authorization_code授予类型是否需要client_secret?

否。如果客户端是公共客户端,则应允许它在不进行身份验证的情况下使用此授予类型(前提是它注册了重定向端点(。问题是,似乎有几个OAuth2.0服务器的实现不允许使用此授权类型的公共客户端。

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

您可能需要查看您使用的实际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.

相关内容

最新更新