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

相关推荐
樱花落木兰1 天前
Git 超全零基础教程|三区原理、全套命令、分支协作、冲突解决、IDEA 集成(面试必备)
ide·git·json·github
qyyyyy5701 天前
PDF 转 JSON 怎么做?从表格和元数据提取到 LLM 结构化处理
数据库·pdf·json·erlang·llama
钱栈up1 天前
别忽略INFO日志:我用AI编码助手1小时修完3个接口的隐藏Bug
后端·json·trae
guwentian1 天前
不用显卡也能跑大模型?GGUF 量化与 llama.cpp 本地推理实战
大模型·token·gguf
迷迭香yy1 天前
A股数据本地存储方案对比JSON、SQLite、ClickHouse、DuckDB怎么选 IG50免费开源股票数据API接口
clickhouse·sqlite·json
葡萄城技术团队2 天前
如何通过 JSON 数据源 / Web API 快速构建轻量级报表(Report)?
前端·json·原型模式
数据狐(Datafox)2 天前
京东商品列表API技术解析与落地应用(含标准 JSON 示例)
java·大数据·前端·人工智能·python·数据分析·json
小七-七牛开发者2 天前
Agent 小知识 | Skill 的设计与生命周期:从工具接口到能力模块
ai·大模型·agent·token·工作流·claudecode·ai coding
数据狐(Datafox)2 天前
1688商品详情API技术解析与落地应用(含标准 JSON 示例)
java·数据库·json