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格式为:
它就是一个json串,两个字段是必须的,不能多也不能少。alg字段指定了生成C的算法,默认值是HS256
将header用base64加密,得到A
通常,JWT库中,可以把A部分固定写死,用户最多指定一个alg的取值
怎样计算B
这里面的前五个字段都是由JWT的标准所定义的。
iss: 该JWT的签发者
sub: 该JWT所面向的用户
aud: 接收该JWT的一方
exp(expires): 什么时候过期,这里是一个Unix时间戳
iat(issued at): 在什么时候签发的
这些定义都可以在标准中找到。
将上面的JSON对象进行[base64编码]可以得到字符串B。
怎样计算C
将上面的两个编码后的字符串都用句号.连接在一起(头部在前),上面拼接完的字符串用HS256算法进行加密,算法是在header中定义的。在加密的时候,我们还需要提供一个密钥(secret)。如果我们用mystar作为密钥的话,那么就可以得到我们加密后的内容C.
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.
相关文章推荐
- JSON Web Token - 在Web应用间安全地传递信息 JWT
- JWT【JSON Web Token】 简述
- 什么是 JWT -- JSON WEB TOKEN
- gitlab无法push或clone的错误:JWT::DecodeError (Nil JSON web token): lib/gitlab/workhorse.rb:120:in `verify_
- Laravel 5 中使用 JWT(Json Web Token) 实现基于API的用户认证
- jwt (JSON Web Token)官方说明
- JWT【JSON Web Token】 简述
- [认证授权] 2.OAuth2授权(续) & JWT(JSON Web Token)
- python使用json web token (jwt)实现http api的加密传输
- JWT(JSON Web Token) Java与.Net简单编码实现
- JSON Web Token (JWT) - 在Web应用间安全地传递信息
- JWT -- json web token
- jwt(json-web-token)在rest中的实现--jersey
- [更新]一份包含: 采用RSA JWT(Json Web Token, RSA加密)的OAUTH2.0,HTTP BASIC,本地数据库验证,Windows域验证,单点登录的Spring Security配置文件
- python使用json web token (jwt)实现http api的加密传输
- JSON Web Token (JWT) 简介
- gitlab无法push或clone的错误:JWT::DecodeError (Nil JSON web token): lib/gitlab/workhorse.rb:120:in `verify_api_request!'
- Java安全验证之jwt(json web token)实践
- JWT(Json web token)
- JWT【JSON Web Token】 简述