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

时间:2019-01-11 20:46:01

标签: oauth oauth-2.0

我正在阅读RFC6749定义OAuth2,并且在section 4.1(关于授权码授予)中似乎表明,当客户端将访问令牌交换授权码时,请求中必须包含{ {1}}标头(具体请参见第4.1.3节)。

  • 确实是所有此类请求所必需的,或者我理解吗? 错误,仅对此类请求的一部分是必需的?如果是这样的话, 什么是子集?
  • 如果需要,为什么?我认为授权代码足以证明客户已获得令牌的授权。

谢谢。

1 个答案:

答案 0 :(得分:2)

答案来自section 2.3 Client Authentication

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

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

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

Section 2.1 Client Types

  

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

     

机密

     

能够维护其机密性的客户   凭据(例如,在具有   限制访问客户端凭据),或者能够安全   使用其他方式进行客户端身份验证。

     

公开

     

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

摘要

对授权标头的要求由授权服务器确定,具体取决于实现。