在浏览器里解码 JWT、校验签名,或签一枚测试令牌。支持 HMAC、RSA 和 ECDSA。令牌不会上传。只有点了用 JWKS 验签,浏览器才会去取公钥。
用 JWKS 验签时,浏览器只去这个地址取公钥,令牌仍留在本页。对方必须允许浏览器访问。
HS 用上面的密钥。RS、PS、ES 用密钥框。验签看的是令牌框。生成 JWT 读的是头部和载荷。
JWT 是三段 Base64url:头部、载荷、签名。头部和载荷是 JSON,没有加密,拿到令牌的人都能读。签名用来说明载荷没被改过,前提是你有 HMAC 密钥或公钥。这一页在浏览器里解码、验签和生成。它会标出 alg 为 none、缺少或已到点的 exp、把时间写成毫秒,以及短于 32 字节的 HMAC 密钥。令牌不上传。哈希页上的校验和不是 JWT 签名。exp 是按秒计的 Unix 时间,换时区到 时间戳 页。
exp 等于或早于现在,就标成已过期。{"sub":"user-1"},HMAC 密钥是 secret。密钥是 Base64 不勾。点验签会说签名一致。安全审计会说密钥只有 6 字节,而且没有 exp。示例故意用短密钥。iat 和 exp。选 1 小时再生成,会按现在的秒数写上这两项。模板里的用户会填 sub 1234567890、name John Doe、email [email protected]。访问会填 sub user-1 和 scope read。HS256、HS384、HS512 用密钥。短于 32 字节也能签,审计会警告。只有密钥本身是 Base64 时才勾密钥是 Base64。RS256、RS384、RS512、PS256、PS384、PS512、ES256、ES384、ES512 用 PEM 或 JWK。公钥用来验签。PKCS#8 私钥用来生成。RSA 私钥里带着公钥,也可以拿来验签。可以贴 SPKI(BEGIN PUBLIC KEY)、PKCS#8(BEGIN PRIVATE KEY)或 PKCS#1 的 RSA。证书会被拒绝。写着 BEGIN EC PRIVATE KEY 的 EC 钥匙也会被拒绝,请导出成 PKCS#8。alg 为 none 不会当成有效。验签以头部里的 alg 为准。HMAC 密钥不会拿去验 RSA。 exp、nbf、iat 都是秒。十三位数字只提示,不换算。JWKS 要是一组钥匙,或单独一把 JWK。有多把却没有 kid 会报错。头部或载荷若是数组,生成 JWT 会停住。
sub 和 exp。没有。那只是 Base64url。密码、身份证号、银行卡号不要放进去。
令牌要有两个点,两段都是 JSON。头部的 alg 得是这一页认识的。HS 要用签发时的同一把密钥,密钥是 Base64 的勾选也要和密钥的存法一致。RSA 和 EC 要公钥,不是证书。exp 过了是安全审计里的警告,不是签名对不上。
HS256 是一把共享密钥。RS256 用私钥签发、公钥验签。不要把 HMAC 密钥交给别的服务,交给他们公钥。
头部表示没有签名。这一页不会把它当成有效令牌。
不能。把签发方的 exp 设短,或在签发方做失效名单。
验签在浏览器里完成。用 JWKS 验签是唯一的请求,而且只下载公钥,不上传令牌。即便如此,也不要在共用电脑上粘贴还在生效的生产令牌。时间差了几个小时的话,数字本身是 UTC,载荷下面那一行是这台电脑的钟。