Advertisement

什么是JWT?

阅读量:

文章目录

  • 一、JWT是什么?

  • 二、

    • 1.JWT格式
    • 2.JWT构成
  • 总结


一、JWT是什么?

Json web token (JWT),
简单的说就是这是一种认证机制,让后台知道请求是来自于受信的客户端。

二、

1.JWT格式

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiIhQCMkJSomIiwiYXVkIjoiIiwiaWF0IjoxNjM5MTIxNjA2LCJuYmYiOjE2MzkxMjE2MDksImV4cCI6MTYzOTIwODAwNiwiZGF0YSI6eyJtZW1iZXJfaWQiOjR9fQ.x5FZPbKzR4_4FQGM3nbT3sVD6EUi0UvKWnAxdYQR_bU

2.JWT构成

从格式上可以看出JWT是由三部分组成的字符串:

header.payload.signature

首先第一部分header,

复制代码
    {
    	"typ" : "JWT",
    	"alg" : "HS256"
    }
    
    
      
      
      
      
    

typ 就是 type的意思,例如这里指明是JWT的类型。

alg 是 algorithm 的意思,指代一个加密算法,例上面指代HS256(HMAC-SHA256),这个算法会在生成第三部分signature的时候用到。

其次第二部分payload,

复制代码
    {
    	"userId": "b08f86af- 35da-48f2-8fab-cef3904660bd"
    }
    
    
      
      
      
    

这部分的本质是用户数据,就是JWT的目的是认证用户身份来源,获取用户相关的信息,例如这里就是userId。

最后第三部分signature,

一般就是用一些算法生成一个能够认证身份的字符串,唯一说明的一点是上面hash方法用到了一个secret,这个东西需要 application server 和authentication server
双方都知道,相当于约好了同一把验证的钥匙,最终才好做认证。


总结

1、因为json的通用性,所以JWT是可以进行跨语言支持的。
2、因为有payload部分,所以JWT可以在自身存储一些所必要的非敏感信息。
3、jwt字节占用很小,所以它非常便于传输。
4、它不需要在服务端保存会话信息, 所以它易于应用的扩展。

不应该在jwt的payload部分存放敏感信息,因为该部分是客户端可解密的部分。
保护好secret密钥,该密钥很重要;建议使用https协议。

全部评论 (0)

还没有任何评论哟~