JWT(json web token原理介绍)

1. JWT构成

JWT(json web token)由三段分别用base64 URL算法加密构成,用.分割。

  1. JWT头 (Header)

    •   // 表示加密协议和类型,以下为默认值
        {
        "alg": "HS256",
        "typ": "JWT"
        }
        <!--0-->
      <!--1-->
      

2. JWT使用及验证

使用流程:前端请求后端获取令牌并保存在cookie或 localStorage,需要时在请求中附带,后端获取并验证。

1
2
>前端一般使用如下协议头:
>'Authorization': 'Bearer ' + token

后端验证流程:获取jwt按照生成方式重新生成并对比。

1
2
3
4
5
6
7
8
9
10
11
12
13
>>jwt = request.form
>>jwt_raw = base64decode(jwt)
>>jwt_en =hash( base64encode(jwt_raw.header) +'.' +base64encode(jwt_raw.payload) + salt)
>>if(jwt_en == jwt_raw.hash){
// jwt正确
if(jwt_raw.exp < now){
// 未过期
}else {
// jwt过期
}
>>}else{
// jwt验证失效
>>}

3. jwt优势

  • 可适应双端(app,web)
  • 后端无需记录token

关于base64URL算法: “=”去掉,”+”用”-“替换,”/“用”_”替换 。避免三个字符与URL中字符混淆