您的位置:首页 > Web前端 > JavaScript

JWT(JSON WEB TOKEN)概要

2017-07-06 19:22 453 查看
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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jwt