JWT详解
JWT (Json Web Token)是符合RFC 7519标准的、能够以URL安全的方式交换压缩的JSON对象。相对于使用XML格式的SAMLJWT使用JSON格式数据压缩效率更高。相对于SWT只能使用对称加密的签名JWT使用公钥/私钥和X.509证书更安全。JWT主要用于认证使得服务端能够直接验证用户身份而无需存储会话数据是无状态应用的理想选择。JWT的结构以dots分割的3个Base64URL编码分别表示Header, Payload, Signature。xxxxx.yyyyy.zzzzzHeader说明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的大小限制通常不大于8kBJWT_token中不能存储太多信息。如果要将用户的Roles也保存到JWT_token中推荐使用Auth0 Fine-Grained Authorization (FGA)。生成Tokencurl --noproxy * -X POST -H Content-Type:application/json -d {username:champagne, password:***} https://api.internal.com/auth/login使用Tokencurl -XGET--header Content-Type: application/json-H Authorization: Bearertoken https://api.internal.com/backend/app/cis/namecurl -XPOST--header Content-Type: application/json--header Authorization: Bearertoken-d {state: ON}https://api.internal.com/backend/app/cisJWT SkillsJWT Skills是符合Agent Skills规范的一组AI skills包括编码jwt-encode、解码jwt-decode和验证jwt-validateJWT tokens。安装npx skills add jsonwebtoken/jwt-skills使用/jwt-decode eyJhbGciOiJIUzI1NiIs... /jwt-encode {sub: 1234567890, name: Test User} /jwt-validate eyJhbGciOiJIUzI1NiIs...JWTRFC 7519JWT skillsAuth0 FGA