JWT详解

JWT (Json Web Token)是符合RFC 7519标准的、能够以URL安全的方式交换压缩的JSON对象。

相对于使用XML格式的SAML,JWT使用JSON格式,数据压缩效率更高。相对于SWT只能使用对称加密的签名,JWT使用公钥/私钥和X.509证书更安全。

JWT主要用于认证,使得服务端能够直接验证用户身份而无需存储会话数据,是无状态应用的理想选择。

JWT的结构

以dots分割的3个Base64URL编码,分别表示Header, Payload, Signature。

复制代码
xxxxx.yyyyy.zzzzz

Header说明token类型(即JWT ),和签名算法(如HMAC算法+SHA256, ECDSA或RSA)。

复制代码
{
  "alg": "HS256",
  "typ": "JWT"
}

Payload是声明entity(即用户数据)和其他metadata(如过期时间)。

Payload中包含的声明有三种类型,registered, public, 和private。public声明供用户按需定义使用。private声明是定制的声明,用于分享信息。

其中,registered声明是预定义的一组互操作声明,可选但是推荐使用,包括:

  • iss(issuer)

  • exp(expiration time)

  • sub(subject)

  • aud(audience)

  • others

    {
    "sub": "1234567890",
    "name": "Taiyangdao",
    "admin": true,
    "iat": 1516239022
    }

Signature确保token有效,是根据Header和Payload的内容,结合签名算法,使用密钥生成。

JWT的使用

在HTTP请求的Header中设置Authorization属性:

复制代码
Authorization: Bearer <JWT_token>

受HTTP Header的大小限制(通常不大于8kB),JWT_token中不能存储太多信息。如果要将用户的Roles也保存到JWT_token中,推荐使用Auth0 Fine-Grained Authorization (FGA)。

生成Token

curl --noproxy '*' -X POST -H Content-Type:application/json -d '{"username":"champagne", "password":"***"}' https://api.internal.com/auth/login

使用Token

curl -X GET --header 'Content-Type: application/json' -H 'Authorization: Bearer<token>' https://api.internal.com/backend/app/cis/\<name>

curl -X POST --header 'Content-Type: application/json' --header 'Authorization: Bearer <token>' **-d {"state": "ON"}**https://api.internal.com/backend/app/cis

JWT Skills

JWT Skills是符合Agent Skills规范的一组AI skills,包括编码(jwt-encode)、解码(jwt-decode)和验证(jwt-validate)JWT tokens。

安装

复制代码
npx skills add jsonwebtoken/jwt-skills

使用

复制代码
/jwt-decode eyJhbGciOiJIUzI1NiIs...
/jwt-encode {"sub": "1234567890", "name": "Test User"}
/jwt-validate eyJhbGciOiJIUzI1NiIs...

JWT

RFC 7519

JWT skills

Auth0 FGA

相关推荐
疯狂SQL1 天前
手写高性能在线 JSON 工具|Web Worker 工程化打包 + 语法自动修复 + 多语言代码生成实战
typescript·json·next.js·web worker·前端性能优化·esbuild·源码实战
写点啥呢6 天前
GLM HUD用量实时显示
claude·token·hud·glm
terry6006 天前
5G视频短信服务商选型全攻略:通道资源、架构能力与成本评估2026最新标准
大数据·人工智能·5g·json·asp.net·信息与通信·数据库架构
前网易架构师-高司机6 天前
带标注的辣椒病叶数据集,识别率95.9%,可识别三种病害和健康叶子,9916张图,支持yolo,coco json,voc xml,文末有模型训练代码
yolo·json·数据集·病害·叶病·病叶·辣椒
PixelBai6 天前
JSON扁平化使用教程:从入门到精通
json
渔舟唱晚,雁阵惊寒7 天前
CSDN博客内容丢失如何恢复?
json
衣乌安、7 天前
JSON-RPC协议
网络协议·rpc·json
PixelBai7 天前
JSON过滤使用教程:从入门到精通
javascript·chrome·json
PixelBai7 天前
JSON过滤实际应用场景案例
json