用户验证三部曲3 - JWT

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'

粘贴点代码

用户验证三部曲3 - JWT_第1张图片
后他API代码:验证JWT有效,验证角色信息

用户验证三部曲3 - JWT_第2张图片
HTTP表头中读取JWT

用户验证三部曲3 - JWT_第3张图片
采用公钥验证JWT

你可能感兴趣的:(用户验证三部曲3 - JWT)