OAuth2:(为什么)为访问令牌交换授权码需要授权头?

OAuth2:(为什么)为访问令牌交换授权码需要授权头?,oauth,oauth-2.0,Oauth,Oauth 2.0,我正在阅读定义OAuth2,在(关于授权码授予)中,它似乎指出,当客户机为访问令牌交换授权码时,请求需要包含授权头(具体参见第4.1.3节) 所有这些请求都需要它吗?或者我理解它 错误,并且仅对此类请求的一个子集需要它?如果是,, 子集是什么 如果需要,为什么?我认为授权代码足以证明客户机被授权获取令牌 谢谢。答案来自 如果客户端类型是机密的,则客户端和授权服务器将建立适合授权服务器安全要求的客户端身份验证方法。授权服务器可以接受满足其安全要求的任何形式的客户端身份验证 机密客户端通常被颁发

我正在阅读定义OAuth2,在(关于授权码授予)中,它似乎指出,当客户机为访问令牌交换授权码时,请求需要包含授权头(具体参见第4.1.3节)

  • 所有这些请求都需要它吗?或者我理解它 错误,并且仅对此类请求的一个子集需要它?如果是,, 子集是什么
  • 如果需要,为什么?我认为授权代码足以证明客户机被授权获取令牌
谢谢。

答案来自

如果客户端类型是机密的,则客户端和授权服务器将建立适合授权服务器安全要求的客户端身份验证方法。授权服务器可以接受满足其安全要求的任何形式的客户端身份验证

机密客户端通常被颁发(或建立)一组客户端凭据,用于使用授权服务器进行身份验证(例如,密码、公钥/私钥对)

授权服务器可以与公共客户端建立客户端认证方法。但是,授权服务器不得依赖公共客户端身份验证来识别客户端

OAuth根据它们的身份验证能力定义了两种客户端类型 安全地使用授权服务器(即,能够维护 客户凭证的保密性):

机密

能够为客户的信息保密的客户 凭据(例如,在具有 对客户端凭据的访问受限),或能够安全访问 使用其他方式进行客户端身份验证

公开

无法为客户的信息保密的客户 凭据(例如,在用户使用的设备上执行的客户端) 资源所有者,如已安装的本机应用程序或web应用程序 基于浏览器的应用程序),并且无法保护客户端
通过任何其他方式进行身份验证

摘要

授权头的要求由授权服务器确定,并且是特定于实现的。

答案来自

如果客户端类型是机密的,则客户端和授权服务器将建立适合授权服务器安全要求的客户端身份验证方法。授权服务器可以接受满足其安全要求的任何形式的客户端身份验证

机密客户端通常被颁发(或建立)一组客户端凭据,用于使用授权服务器进行身份验证(例如,密码、公钥/私钥对)

授权服务器可以与公共客户端建立客户端认证方法。但是,授权服务器不得依赖公共客户端身份验证来识别客户端

OAuth根据它们的身份验证能力定义了两种客户端类型 安全地使用授权服务器(即,能够维护 客户凭证的保密性):

机密

能够为客户的信息保密的客户 凭据(例如,在具有 对客户端凭据的访问受限),或能够安全访问 使用其他方式进行客户端身份验证

公开

无法为客户的信息保密的客户 凭据(例如,在用户使用的设备上执行的客户端) 资源所有者,如已安装的本机应用程序或web应用程序 基于浏览器的应用程序),并且无法保护客户端
通过任何其他方式进行身份验证

摘要


授权标头的要求由授权服务器确定,并且是特定于实现的。

因此,授权标头用于验证客户端(即第三方应用程序)而不是资源所有者?顺便说一下,我正在实现授权服务器。我可以决定不支持机密客户吗?如果我这样做了,那么在交流中到底有什么是不安全的呢?谢谢您可以决定是否实现
授权
标题。这取决于您的设计。如果我不实现它,我是否会在资源所有者的安全方面损失任何东西?这是我不理解的。因为您正在实现授权服务器,所以您需要决定安全机制。你丢了什么东西吗?取决于你的设计。OAuth 2.0有点复杂,错误会造成漏洞,可能会被攻破。因此,授权标头用于验证客户端(即第三方应用程序),而不是资源所有者?顺便说一下,我正在实现授权服务器。我可以决定不支持机密客户吗?如果我这样做了,那么在交流中到底有什么是不安全的呢?谢谢您可以决定是否实现
授权
标题。这取决于您的设计。如果我不实现它,我是否会在资源所有者的安全方面损失任何东西?这是我不理解的。因为您正在实现授权服务器,所以您需要决定安全机制。你丢了什么东西吗?取决于你的设计。OAuth2.0有点复杂,错误可能会造成漏洞。