跳到主要内容

9. Resource Server-Provided Nonce (资源服务器提供的 Nonce)

9. Resource Server-Provided Nonce (资源服务器提供的 Nonce)

资源服务器也可以选择提供一个 nonce 值,以包含在发送给它们的 DPoP 证明中。它们使用 DPoP-Nonce 头部提供 nonce,方式与授权服务器相同,如第 8 节和第 8.2 节所述。错误信号传输如第 7.1 节所述执行。资源服务器使用 HTTP 401 (Unauthorized) 错误代码以及随附的 WWW-Authenticate: DPoP 值和 DPoP-Nonce 值来实现此目的。

例如,当资源服务器需要 nonce 时,在响应没有 nonce 的资源请求时,资源服务器可以响应如下 DPoP-Nonce 值,以提供要包含在 DPoP 证明中的 nonce 值。下面的示例根据 [RFC8792] 使用 "" 换行。

HTTP/1.1 401 Unauthorized
WWW-Authenticate: DPoP error="use_dpop_nonce", \
error_description="Resource server requires nonce in DPoP proof"
DPoP-Nonce: eyJ7S_zG.eyJH0-Z.HX4w-7v

图 24: 对没有 Nonce 的资源请求的 HTTP 401 响应

请注意,授权服务器和资源服务器提供的 nonce 是不同的,不应混淆,因为 nonce 仅会被颁发它们的服务器接受。同样,如果客户端使用多个授权服务器和/或资源服务器,则其中任何一个颁发的 nonce 仅应在颁发服务器处使用。开发人员还应注意不要将 DPoP nonce 与 OpenID Connect [OpenID.Core] ID Token nonce 混淆。