开发者 / OAuth

PKCE代码验证器和代码挑战生成器

按照RFC 7636生成OAuth 2.0 PKCE代码验证器、对应的S256代码挑战和state值,也可以检查现有验证器。

PKCE代码验证器和代码挑战生成器: PKCE可以保护无法安全保存机密的应用(例如移动应用和单页应用)的OAuth授权码流程。代码验证器是由非保留字符组成的随机字符串,这里使用浏览器的安全随机生成器无偏生成;代码挑战则是对代码验证器进行SHA-256计算后再编码为Base64url的结果。计算结果与RFC 7636中的演算示例一致。 完全在浏览器中本地运行,文件不会上传到服务器。

使用次数
在浏览器中
费用
免费·无需注册
可用性
可直接使用
PKCE代码验证器和挑战值生成器本地处理

完全在浏览器中运行

code_verifier—
code_challenge (S256)—
code_challenge_methodS256
state—

在授权请求中发送code_challenge和code_challenge_method=S256,将验证器保密地保存在客户端,并在令牌请求中一并发送。根据RFC 7636的定义,挑战值是验证器的Base64url SHA-256值。

流程简介

应用生成并保存验证器,将质询与登录请求一起发送到授权服务器,接收授权代码,然后将代码和验证器一起换取令牌。拦截授权代码的攻击者如果没有验证器,就无法使用该代码。

如需查看收到的令牌,请使用JWT解码器。

如今处处都需要

OAuth 2.1和当前的安全最佳实践建议,所有使用授权码流程的客户端都采用PKCE,包括机密型服务器端客户端。

使用方法

  1. 选择代码验证器长度(43到128个字符),然后点击“生成”。
  2. 将代码挑战和方法复制到授权请求中。
  3. 在令牌请求中保留代码验证器;粘贴验证器即可查看对应的代码挑战。

隐私与限制

所有值都在浏览器中生成,绝不会发送到任何地方。

相关工具

常见问题

应该使用plain还是S256?

只要客户端能够计算SHA-256,就应始终使用S256;所有现代平台都可以做到这一点。plain仅供无法计算SHA-256的客户端使用。

state值有什么用?

它可以防止跨站请求伪造:在授权请求中发送该值,并检查返回的是否为同一个值。

代码验证器应该多长?

至少43个字符;64个或更多字符很常见。长度增加会带来更多随机性,但在128个字符以内不会产生兼容性问题。

免费工具·使用在浏览器中次·无需账户