首页 > 解决方案 > PKCE OAuth 2.0 中“code_verifier”的意义是什么?

问题描述

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

这个 code_verfier 值有多敏感?这个值是否必须保密?如果这个值被泄露,对手可以执行什么攻击?

标签: oauth-2.0pkce

解决方案


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

这个值应该保密,见下文。

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

请注意,即使不使用任何(散列)转换,code_verifier而是像plaincode_challenge授权请求中那样发送它,对于能够拦截到重定向 URI 的回调的攻击者来说,它仍然会变得困难,因为他还必须拦截传出请求。

但一般来说,code_verifier应该用 SHA256 散列到 中,code_challenge所以即使在拦截请求时,攻击者也无法推断出code_verifier.


推荐阅读