JWT学习(一):JWT简介

1、简介:
	Json web token (JWT),  是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。
2、使用场景:
	(1) 权限认证:这是JWT使用最常见的地方,用户一旦登录,就会获得一个JWT,这个JWT使得用户有权限访问
后续的路径或者服务。由于其容量小和易于跨域的特点,因此JWT广泛应用在分布式单点登录中。
	(2) 信息交换:JWT是不同服务之间信息交换和好的一种方式。因为它可以使用键值对来标记,所以接收方
可以确定发送方的身份。此外,JWT的signature的通过head和payload计算出来的,所以可以保证传递的信息
内容不会被篡改。
3、JWT的结构
	

JWT有三部分组成,这三部分含义分别是header,payload, signature

Header

头部包含了两个方面:类型和使用的哈希算法(如HMAC SHA256):

对这个JSON字符进行base64encode编码,我们就有了首个JWT:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

Payload

JWT的第二部分是payload,也称为 JWT Claims,这里放置的是我们需要传输的信息,有多个项目如

注册的claim名称,公共claim名称和私有claim名称。

注册claim名称有下面几个部分:

  • iss: token的发行者
  • sub: token的题目
  • aud: token的客户
  • exp: 经常使用的,以数字时间定义失效期,也就是当前时间以后的某个时间本token失效。
  • nbf: 定义在此时间之前,JWT不会接受处理。
  • iat: JWT发布时间,能用于决定JWT年龄
  • jti: JWT唯一标识. 能用于防止 JWT重复使用,一次只用一个token

 

公共claim名称用于定义我们自己创造的信息,比如用户信息和其他重要信息。

私有claim名称用于发布者和消费者都同意以私有的方式使用claim名称。

下面是JWT的一个案例:

{ "iss": "scotch.io", "exp": 1300819380, "name": "Chris Sevilleja", "admin": true  }

签名

JWT第三部分最后是签名,签名由以下组件组成:

  • header
  • payload
  • 密钥

下面是我们如何得到JWT的第三部分:

这里的secret是被服务器签名,我们服务器能够验证存在的token并签名新的token。

 

4、JWT是如何工作的

当用户登录成功之后,服务端会生成一个JWT并且返回给浏览器(放在响应头中),这种方法代替了传统的

在服务端创建一个session然后返回浏览器cookie的方法。

想了解JWT怎么用到实战中的同学可以看这篇文章:http://blog.csdn.net/a18716374124/article/details/78475688

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值