TingYu Tools

PKCE 生成器

OAuth2/OIDC code_verifier 与 code_challenge

配置

✅ SHA-256 哈希后 Base64URL 编码
推荐:64 字符(RFC 7636 要求:43-128)
💡 使用说明

什么是 PKCE?

PKCE(Proof Key for Code Exchange)是 OAuth 2.0 的安全增强扩展(RFC 7636),通过动态生成验证码来防止授权码拦截攻击。

工作流程

  1. 客户端生成随机 code_verifier(43-128 字符)
  2. 使用 SHA-256 哈希并 Base64URL 编码生成 code_challenge
  3. 在授权请求中发送 code_challenge 和 code_challenge_method
  4. 在令牌请求中发送 code_verifier 进行验证

转换方法

  • S256: SHA-256 哈希 + Base64URL 编码(推荐,更安全)
  • plain: Verifier 和 Challenge 相同(不推荐,仅用于无法支持 SHA-256 的环境)

应用场景

  • 移动应用的 OAuth 2.0 授权
  • 单页应用(SPA)的安全授权
  • 无法安全存储 Client Secret 的公开客户端
  • 防止授权码拦截攻击

安全提示

  • 始终优先使用 S256 方法,除非环境不支持
  • code_verifier 必须在每次授权请求时重新生成
  • code_verifier 必须保密存储在客户端
  • 推荐 verifier 长度为 64 字符以提高安全性

验证码

长度:64 字符
字符集:A-Z a-z 0-9 - . _ ~

质询码

转换方法:S256
编码:Base64URL
长度:43 字符
代码示例

授权请求示例

GET /authorize?
  response_type=code
  &client_id=YOUR_CLIENT_ID
  &redirect_uri=YOUR_REDIRECT_URI
  &scope=openid profile
  &code_challenge=Xha7p3zYxZM2sNAx3vj8p2E12IPiR5R9oBwdLoafdRo
  &code_challenge_method=S256

令牌请求示例

POST /token
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&code=AUTHORIZATION_CODE
&redirect_uri=YOUR_REDIRECT_URI
&client_id=YOUR_CLIENT_ID
&code_verifier=K68ToLf5oeGIQ~vEks81N7OxwbjOU1RYZpkDfYprwRMnxaMwHLkcUOdjL~i4oIV2