使用方法
- 点击生成得到新的 code_verifier,或粘贴已有的。
- code_challenge 按 BASE64URL(SHA-256(code_verifier)) 计算。
- 在授权请求中发送 code_challenge 和 code_challenge_method=S256。
- 在令牌请求中发送 code_verifier。
PKCE(Proof Key for Code Exchange,RFC 7636)用于保护 OAuth 2.0 授权码流程,专为无法保存客户端密钥的移动应用、桌面应用和单页应用等公共客户端设计。客户端在跳转授权页之前生成一次性的秘密值 code_verifier,只发送它的哈希值 code_challenge。之后用授权码换取令牌时再发送原始 verifier,服务器核对两者是否匹配,只截获授权码换不到令牌。
本工具用 crypto.getRandomValues 生成 32 字节随机数,编码为无填充 base64url,因此 verifier 为 43 个字符。code_challenge 是 verifier 的 SHA-256 再按同样方式编码,始终为 43 个字符。RFC 7636 也定义了 plain,但规定能计算 SHA-256 的客户端必须使用 S256,所以这里只提供 S256。适合调试登录对接或手动构造测试请求。
粘贴的 verifier 会直接计算哈希,不做格式校验,请自行确认它是 43–128 个字符,且只包含 A-Z、a-z、0-9、-、.、_、~。每次授权请求都应生成新的 verifier。两个值都在浏览器内计算,不会发送到任何地方。