我有一个关于 PKCE (RFC 7636) 的问题。使用授权代码授予的 OAuth 客户端有两个组件:(1) 资源所有者设备上发起授权请求的部分,以及 (2) 服务器上可以接受和发送 HTTPS 消息的重定向端点。
OAuth 的 PKCE 扩展让客户端执行以下操作:
- 生成一个名为 code_verifier 的加密随机字符串。
- 创建 code_verifier 的 SHA-256 摘要并对其进行 Base64 编码。将其与授权请求一起发送。
- 当客户端获取授权码并将其发送到令牌端点以获得访问令牌时,请包含原始 code_verifier 值。
第 2 步发生在资源所有者的设备上。一旦资源所有者批准了请求,他/她的浏览器就会被重定向到客户端的重定向端点。第 3 步发生在重定向端点。
那么问题来了,重定向端点怎么知道code_verifier的值呢?它是在资源所有者的设备上生成的。