TEXT LAB / LIVEPKCE 生成加载中
PKCE 生成 - 文本工具 · 萤炬工具箱 · 工具说明与使用指南
PKCE 生成 - 文本工具 · 萤炬工具箱
PKCE 生成产出 OAuth2 授权码模式所需的 code_verifier 与对应的 S256 code_challenge,遵循 RFC 7636。调试移动端或单页应用的授权流程时,需要手工构造授权 URL 并在换 token 时回传 verifier,用 curl 或 Postman 试接口时手算 SHA-2…
PKCE 生成产出 OAuth2 授权码模式所需的 code_verifier 与对应的 S256 code_challenge,遵循 RFC 7636。调试移动端或单页应用的授权流程时,需要手工构造授权 URL 并在换 token 时回传 verifier,用 curl 或 Postman 试接口时手算 SHA-256 再做 base64url 很麻烦,这里一键生成配对值。
使用步骤
- 点击生成,得到一对 code_verifier 与 code_challenge。
- 把 code_challenge 与 code_challenge_method=S256 放进授权请求 URL。
- 拿到授权码后,用同一个 code_verifier 去换取 token。
- 每次新的授权流程重新生成一对,不要复用。
功能与限制
- 生成的 verifier 长度符合 RFC 7636 要求(43 到 128 个字符)。
- 本地用浏览器加密 API 计算,verifier 不上传。
常见问题
- PKCE 是用来解决什么问题的?
- 公开客户端(手机 App、纯前端应用)没法安全保存 client_secret,授权码一旦被截获就能被换成 token。PKCE 让客户端自己生成一个一次性秘密,只有持有它的人才能完成兑换,从而堵住这个缺口。
- S256 和 plain 该选哪个?
- 一律选 S256。plain 是把 verifier 原样当 challenge 传,等于没有保护,规范里只为极老旧的无哈希能力环境保留。
- code_verifier 可以重复使用吗?
- 不可以。它是一次性的,每次发起授权都要重新生成。复用会让之前被截获的值仍然有效,等于自己废掉了 PKCE 的意义。
- 为什么 challenge 里没有加号和斜杠?
- 因为用的是 base64url 变体:加号换成减号、斜杠换成下划线、去掉末尾等号填充,这样才能安全地放进 URL 查询参数而不需要二次转义。