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

相关推荐
Asurplus29 分钟前
【SpringBoot4】3、从SpringBoot4升级Sa-Token1.46.0报错
redis·sa-token·json·jackson·springboot4
代码中介商4 小时前
C++ 预约系统实战(三):服务端实现——libevent 事件驱动与业务路由
c++·json·c/s
花北城10 小时前
【C#底层库】access_token授权鉴权验证
c#·鉴权·token·授权
七夜zippoe11 小时前
Agent 上下文工程:Token 管理、上下文压缩与分层记忆设计
ai·agent·token·上下文压缩·分层记忆
譕痕1 天前
notepad++安装插件 可视化展示 json串内容
json·intellij-idea
databook1 天前
DuckDB + SQL 高效分析 JSON 数据
数据分析·json·nosql
九章云极DataCanvas1 天前
让大模型少做重复计算 九章云极开源分布式KV Cache系统DingoCache
人工智能·开源·token·九章智算云
数据狐(Datafox)2 天前
1688商品列表API接口解析(附 JSON 样例)
java·开发语言·数据库·爬虫·json
SoStraw2 天前
从零接入 webrpc:按这份最小清单跑通双端,再写业务
sdk·p2p·入门·token·webrpc·opensession·senddata
kolyle3 天前
万级 QPS 下的 Token 分发系统架构:从 0 到 1 跑通 AI 时代的“水电煤“
开发语言·人工智能·系统架构·token·qps·极智词元·大模型私有化部署