OAuth2 DPoP

RFC 9449 OAuth 2.0 Demonstrating Proof of Possession (DPoP)

注意dpop主要防access token盗用,不保护http payload。

acess token request

client: 随机生成dpop key pair

client -> authorization server 的access token请求中,包含dpop pubkey,以及dpop signature。

authorization server: 校验dpop signature,将 dpop pubkey 与 access token 关联。

authorization server -> client: type为dpop的access token。

resource request

client -> resource server: 以该acess token请求resource,http header中包含:

  • Authorization: DPoP <access token>

  • DPoP: <DPoP Proof>

该DPoP Proof声明了此次请求的 { Target URI (htu), HTTP method (htm), Timestamp (iat), Unique identifier (jti)}, 以 dpop private key签名。

resource server:检查acess token

  • 如果access token为JWT格式,则resource server可校验access token的合法性,并通过cnf.jkt对dpop pubkey的digest进行比较,确认dpop pubkey已被authorization server认可。

  • 如果access token为opaque string,则resource server通过token introspection endpoint查询dpop pubkey详情。

resource server: 基于dpop pubkey,检查dpop proof。

resource server: 最终决策是否允许该client访问resource。