JWT
- JSON Web Token
- 采用非对称算法(公钥私钥)进行签名
- Todo API(业务API)可独立对JWT进行验证,无需调用用户API
- 包含角色信息
jwt由三部分组成:
头部(header)
载荷(jwt body) 包含一些定义信息和自定义信息
签证(signature)
JWT HEADER
{
"typ": "JWT", //声明类型为jwt
"alg": "RS256" //声明签名算法为RS256
}
JWT BODY
{
"iss": "notepad2.cn", // jwt签发者
"exp": 1525318201, //jwt的过期时间,过期时间必须要大于签发时间
"aud": "dbbc404a-025c-4bc0-a33d-b045372d27e4", //接收jwt的一方
"sub": "22631ce9-a208-4495-866f-efae81bd044a", //可以认为是用户ID
"name": "张三",
"role": [
"RETRIEVE_TODOS"
]
}
JWT 签名
RS256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
privateKey
)
客户端在向 Todo API 发送查询请求时,需要携带JWT(一般是在header中),后台接收到JWT,采用公钥进行校验JWT的有效性,找出相关字段,编写SQL语句
-- 查询用户待办SQL语句
select * from todo where user_id = '22631ce9-a208-4495-866f-efae81bd044a'
粘贴点代码
后他API代码:验证JWT有效,验证角色信息HTTP表头中读取JWT
采用公钥验证JWT
网友评论