1. Introduction (简介)
1. Introduction (简介)
演示所有权证明 (Demonstrating Proof of Possession, DPoP) 是一种应用层机制,用于对 OAuth [RFC6749] 访问令牌和刷新令牌进行发送者约束 (sender-constraining)。它允许客户端通过在 HTTP 请求中包含 DPoP 头部来证明其拥有公钥/私钥对。头部的值是一个 JSON Web Token (JWT) [RFC7519],它使授权服务器能够将颁发的令牌绑定到客户端密钥对的公共部分。此类令牌的接收者随后能够验证令牌与密钥对的绑定关系,而客户端已通过 DPoP 头部证明它持有该密钥对, thereby providing some assurance that the client presenting the token also possesses the private key (从而提供某种保证,即出示令牌的客户端也拥有私钥)。换句话说,令牌的合法持有者被约束为持有并证明拥有密钥对私有部分的发送者。
本文规定的机制可用于无法使用利用底层安全传输层元素的其他发送者约束令牌方法(例如 [RFC8705] 或 [TOKEN-BINDING])或不希望使用这些方法的情况。例如,由于用户代理中 TLS 客户端身份验证的用户体验欠佳以及缺乏对 HTTP 令牌绑定的支持,如果 OAuth 客户端是动态下载并在 Web 浏览器中执行的应用程序(有时称为“单页应用程序”),通过这两种机制都无法使用。此外,直接在用户设备上安装和运行的应用程序完全可以受益于 DPoP 绑定的令牌,以防止受损或恶意资源滥用令牌。此类应用程序通常具有用于加密密钥的专用受保护存储。
无论采用何种客户端身份验证方法,DPoP 都可用于对访问令牌进行发送者约束,但 DPoP 本身并不用于客户端身份验证。DPoP 也可用于对颁发给公共客户端(即没有与 client_id 关联的身份验证凭据的客户端)的刷新令牌进行发送者约束。
1.1. 约定和术语
本文档中的关键词 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", 和 "OPTIONAL" 应按照 BCP 14 [RFC2119] [RFC8174] 中的描述进行解释,当且仅当它们以全大写形式出现时,如此处所示。
本规范使用 [RFC5234] 的增强巴科斯-瑙尔范式 (ABNF) 标记法。
本规范使用 "OAuth 2.0 授权框架" [RFC6749] 定义的术语“访问令牌”、“刷新令牌”、“授权服务器”、“资源服务器”、“授权端点”、“授权请求”、“授权响应”、“令牌端点”、“授权类型”、“访问令牌请求”、“访问令牌响应”、“客户端”、“公共客户端”和“机密客户端”。
术语“请求”、“响应”、“头字段”和“目标 URI”引自 [RFC9110]。
术语 "JOSE" 和 "JOSE Header" 引自 [RFC7515]。
本文档包含部分和完整 HTTP 消息的非规范性示例。根据 [RFC8792],一些示例使用单个反斜杠表示长值的换行。换行行上的字符和前导空格不是值的一部分。