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

相关推荐
光影62738 分钟前
Unittest单元测试基础速记
测试工具·单元测试·json·测试覆盖率
ZLongTeng3 小时前
EIDE的launch.json文件
json
梦想不只是梦与想7 小时前
Python 中的 json 模块
python·json·对象转字符串
枫子有风9 小时前
卡码网盘项目深挖
java·redis·jwt·es·pgvector
步行cgn10 小时前
JSON.stringify 详解:把 JavaScript 对象变成 JSON 字符串
开发语言·javascript·json
阿正的梦工坊11 小时前
深入理解 JSON-RPC 2.0:轻量级远程调用协议详解
rpc·json
腾讯数据架构师12 小时前
任务跑完怎么直接出图表?CubeStudio 任务可视化 ECharts 数据格式实操(CSV/JSON + metric.json,11 种图表一键渲染)
前端·json·echarts·数据可视化
救救孩子把12 小时前
结构化输出为何“格式正确、答案错误”?JSON Schema 的能力边界
android·java·json·agent·agent服务
霸道流氓气质14 小时前
智能表单生成器:结构化输出契约、JSON Schema 驱动渲染与 EAV/JSONB 混合存储的 Vue3 + Spring AI 生产级实战
人工智能·spring·json
SEO_juper14 小时前
Bash 交叉验证 robots.txt 和 sitemap:两个文件自相矛盾,页面永远收录不了
开发语言·python·node.js·json·bash