PKCE OAuth 2.0 中“code_verifier”的意义是什么?

Jit*_* KS 5 oauth-2.0 pkce

在 PKCE 中,我了解 code_verifier 用于生成代码质询,稍后此 code_verifier 值由授权服务器验证以完成 PKCE 过程。

这个 code_verfier 值有多敏感?这个值必须保密吗?如果该值泄露,对手可以执行哪些攻击?

Han*_* Z. 5

code_verifier确实很敏感:这是客户端在调用令牌端点时证明它是首先发起授权请求的机制。

该值应保密,另见下文。

泄露它将使攻击者能够在调用授权服务器的令牌端点时冒充(公共)客户端,从而获得用于真实客户端的令牌。

请注意,即使不使用任何(散列)转换,而是按照授权请求中的code_verifier方式发送它,攻击者仍然很难拦截重定向 URI 的回调,因为他还必须拦截传出的请求。plaincode_challenge

但一般来说,code_verifier应该使用 SHA256 进行哈希处理,因此code_challenge即使拦截请求,攻击者也无法推断出code_verifier.