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

相关推荐
庖丁AI6 小时前
PDF 表格提取到 CSV 和 JSON 怎么做?复杂版式要先解决结构化解析
pdf·json
CedarQR1 天前
VS Code Copilot Chat 配置 MCP Server 全攻略(以 Next AI Draw.io 为例)
人工智能·ui·json
肖志-AI全栈1 天前
从零讲透 Ajax:XHR、Fetch、JSON 序列化到异步编程全链路
前端·ajax·json
前端Baymax1 天前
JSON配置文件的UTF-8 BOM编码陷阱
json
大厂AI实战3 天前
Token 节约实战:全链路降本 90%+
token·ai agent·ai 编程
东方-教育技术博主4 天前
论文全文翻译_通过VR课堂适应性反馈提升职前教师注意能力
json·vr
nbu04william4 天前
Deepseek-api省token的用法
python·大模型·token·deepseek
Random_index4 天前
#Vue3篇: Vue 项目发版后如何提示用户刷新?基于 package.json 版本号的前端更新检测方案
前端·vue.js·json
寻道模式4 天前
【开发心得】GA + 飞书频繁报错被忽略的“元凶”
json·飞书·ga
SelectDB技术团队4 天前
Agent 场景动态 JSON 性能拆解:Apache Doris 比 ClickHouse 快 7 倍、比 Elasticsearch 快 2 倍
数据库·clickhouse·elasticsearch·json·apache·日志分析·apache doris