【发布时间】:2019-06-06 19:20:44
【问题描述】:
我正在阅读 RFC6749 定义 OAuth2 和 section 4.1(关于授权代码授予),它似乎声明当客户端交换访问令牌的授权代码时,请求需要包含 authorization 标头(具体参见第 4.1.3 节)。
- 是否确实需要所有此类请求,或者我理解它 错了,只需要此类请求的子集?如果是这样的话, 子集是什么?
- 如果需要,为什么?我以为授权码就足以证明客户端被授权获取token了。
谢谢。
【问题讨论】:
我正在阅读 RFC6749 定义 OAuth2 和 section 4.1(关于授权代码授予),它似乎声明当客户端交换访问令牌的授权代码时,请求需要包含 authorization 标头(具体参见第 4.1.3 节)。
谢谢。
【问题讨论】:
答案来自section 2.3 Client Authentication。
如果客户端类型是机密的,客户端和授权服务器建立适合授权服务器安全要求的客户端认证方法。授权服务器可以接受满足其安全要求的任何形式的客户端身份验证。
通常会颁发(或建立)一组用于向授权服务器进行身份验证的客户端凭据(例如,密码、公钥/私钥对)。
授权服务器可以与公共客户端建立客户端身份验证方法。但是,授权服务器不得依赖公共客户端身份验证来识别客户端。
OAuth 根据其身份验证能力定义了两种客户端类型 安全地与授权服务器(即,维护 客户凭据的机密性):
机密
能够为其保密的客户 凭据(例如,在安全服务器上实现的客户端 限制访问客户端凭据),或能够安全 使用其他方式进行客户端身份验证。
公开
客户无法为其保密 凭据(例如,在由 资源所有者,例如已安装的本机应用程序或 Web 基于浏览器的应用程序),并且无法提供安全客户端
通过任何其他方式进行身份验证。
总结
授权标头的要求由授权服务器确定,并且是特定于实现的。
【讨论】:
Authorization 标头。这取决于您的设计。