PKCE code_verifier 与 code_challenge 生成器

生成或粘贴 code_verifier,即可得到 OAuth 2.0 PKCE(RFC 7636)所需的 S256 code_challenge。

code_challenge (S256)

完全在浏览器中运行。输入内容不会被发送或保存。

使用方法

  1. 点击生成得到新的 code_verifier,或粘贴已有的。
  2. code_challenge 按 BASE64URL(SHA-256(code_verifier)) 计算。
  3. 在授权请求中发送 code_challenge 和 code_challenge_method=S256。
  4. 在令牌请求中发送 code_verifier。

常见问题

什么是 PKCE?

Proof Key for Code Exchange(RFC 7636)。授权请求发送哈希后的 code_challenge,令牌请求发送原始 code_verifier,因此仅窃取授权码无法换取令牌。

code_challenge 如何计算?

S256 方式:对 ASCII 的 code_verifier 做 SHA-256,再进行不带填充的 base64url 编码。RFC 7636 示例 dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk 的结果是 E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM。

为什么生成的 verifier 是 43 个字符?

32 字节随机数做不带填充的 base64url 编码正好 43 个字符,这是 RFC 7636 允许的最短长度(由 A-Z、a-z、0-9、-、.、_、~ 组成,43–128 个字符)。

相关工具