JWT(JSON WEB TOKEN)概要

jwt与session区别
Session的状态是存储在服务器端,客户端只有session id;而Token的状态是存储在客户端 ,所有的区别都是基于此。

JWT是什么
JWT就是一个字符串,经过加密处理与校验处理的字符串,形式为:
A.B.C = header(头部).poyload(负荷).sign(签名)。
A由JWT头部信息header加密得到
B由JWT用到的身份验证信息json数据加密得到
C由A和B加密得到,是校验部分

怎样生成A
header格式为:

{
    "typ": "JWT",
    "alg": "HS256" 
}

它就是一个json串,两个字段是必须的,不能多也不能少。alg字段指定了生成C的算法,默认值是HS256
将header用base64加密,得到A
通常,JWT库中,可以把A部分固定写死,用户最多指定一个alg的取值

怎样计算B

{
    "iss": "John",
    "iat": 1441593502,
    "exp": 1441594722,
    "aud": "",
    "sub": "",
    "from_user": "B",
    "target_user": "A"
}

这里面的前五个字段都是由JWT的标准所定义的。
iss: 该JWT的签发者
sub: 该JWT所面向的用户
aud: 接收该JWT的一方
exp(expires): 什么时候过期,这里是一个Unix时间戳
iat(issued at): 在什么时候签发的
这些定义都可以在标准中找到。

将上面的JSON对象进行[base64编码]可以得到字符串B

怎样计算C

将上面的两个编码后的字符串都用句号.连接在一起(头部在前),上面拼接完的字符串用HS256算法进行加密,算法是在header中定义的。在加密的时候,我们还需要提供一个密钥(secret)。如果我们用mystar作为密钥的话,那么就可以得到我们加密后的内容C.

猜你喜欢

转载自blog.csdn.net/wanzhix/article/details/74598876