跳到主要内容

1. 简介 (Introduction)

OAuth 2.0 授权框架 (OAuth 2.0 Authorization Framework) [RFC6749] 允许客户端与由不同实体控制的多个独立授权服务器 (authorization server) 交互. 某些 OAuth 授权类型会利用资源所有者 (resource owner) 的用户代理 (user agent), 将授权服务器的响应传递给 OAuth 客户端. 授权码授权 (authorization code grant) 的授权响应就是这种模式的一个示例.

[RFC6749] Section 4.1.2 中规定的授权响应不包含任何关于签发该响应的授权服务器身份的信息. 因此, 从资源所有者的用户代理接收响应的客户端无法确定最初是谁签发了该响应以及其中包含的机密信息. 对响应来源缺乏确定性会造成一类称为 "混淆攻击 (mix-up attacks)" 的攻击.

混淆攻击对所有会与多个授权服务器交互的 OAuth 客户端都是潜在威胁. 当其中至少一个授权服务器受攻击者控制时, 攻击者就可以发起混淆攻击, 获取其他任一授权服务器签发的授权码 (authorization code) 或访问令牌 (access token). 攻击者可以通过多种方式控制客户端支持的授权服务器. 例如, 某个授权服务器可能被攻陷, 或者攻击者可以注册自己的授权服务器, 比如使用动态客户端注册 (dynamic client registration) [RFC7591].

只与一个授权服务器交互的 OAuth 客户端不会受到混淆攻击影响. 但是, 当这类客户端将来决定增加对第二个授权服务器的支持时, 它们就会变得易受攻击, 并需要应用混淆攻击的对策.

混淆攻击的目标是诱骗客户端把授权码或访问令牌发送给攻击者, 而不是发送给真实的授权服务器或资源服务器 (resource server), 从而窃取授权码或访问令牌. 对于使用 OAuth 管理访问权限的资源来说, 这会严重威胁其机密性和完整性. 关于混淆攻击类别的详细描述和不同变体, 可参见 "OAuth 2.0 Security Best Current Practice" [OAUTH-SECURITY-TOPICS] Section 4.4, 以及最早指出这类攻击的研究成果: "On the security of modern Single Sign-On Protocols: Second-Order Vulnerabilities in OpenID Connect" [arXiv.1508.04324] 和 "A Comprehensive Formal Security Analysis of OAuth 2.0" [arXiv.1601.01229].

本文档在授权响应中定义了一个名为 iss 的新参数. iss 参数允许授权服务器在授权响应中显式包含自身身份. 客户端可以将 iss 参数值与其认为正在交互的授权服务器的颁发者标识符 (issuer identifier) 进行比较, 例如从该服务器元数据中取得的标识符. iss 参数使客户端能够确定授权服务器身份, 并确保授权码和访问令牌等凭据只发送给预期接收方.

iss 参数抵御混淆攻击的有效性已在 "A Comprehensive Formal Security Analysis of OAuth 2.0" [arXiv.1601.01229] 中得到分析和形式化证明.

1.1. 约定和术语 (Conventions and Terminology)

本文档中的关键词 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", 和 "OPTIONAL" 只有在像这里这样全部大写出现时, 才应按照 BCP 14 [RFC2119] [RFC8174] 中的描述进行解释.

本规范使用 OAuth 2.0 Authorization Framework [RFC6749] 定义的术语 "access token", "authorization code", "authorization code grant", "authorization server", "resource server", "authorization response", "grant type", 和 "client". 术语 "issuer identifier" 由 OAuth 2.0 Authorization Server Metadata [RFC8414] 定义.