JWT

一、为什么使用JWT

1、避免跨域(CORS)发生时导致的cookie不能使用的问题:

cookie是与一定的域名绑定的,如果发生跨域,那么cookie将无法携带;虽然可以通过父域名的方案来解决,但是还是有完全跨域需求的存在。

2、避免查库:

因为JWT自身的playload中可以携带一些业务信息(不要存放私密信息,playload中的内容虽不可被修改,但可被查看),进行鉴权时,可以直接进行使用,而不需要再去查库获取相关信息。

二、授权(登录)及鉴权(权限校验)

先去授权中心进行授权,拿到token之后,再访问相关API,访问时需要进行鉴权处理

三、JWT组成

JWT: 全称为json web token,由Header(头)、Playload(有效负载)、Signature(签名)三部分组成(逗号分隔)

1.Header

头通常由两部分组成:令牌的类型(JWT)和正在使用的签名算法(如HMAC SHA256或RSA)

把这个JSON通过base64url编码,以形成JWT的第一部分

2.Playload

令牌的第二部分是有效负载,它包含声明。声明是关于实体(通常是用户)和附加数据的语句。声明有三种类型:注册声明、公开声明和私人声明

注册声明:这些是一组预先定义的声明,这些声明不是强制的,但建议提供一组有用的、可互操作的声明。其中包括:ISS(发行人)、EXP(到期时间)、SUB(主题)、AUD(受众)等

公开声明:这些可以由使用JWT的人员随意定义。但是为了避免冲突,应该在IANA JSON Web令牌注册表中定义它们,或者将它们定义为包含抗冲突命名空间的URI。

私有声明: 这些是为了在双方之间共享信息而创建的自定义声明,这些声明同意使用它们,并且既不是注册声明也不是公共声明。

例如:

然后,对有效负载进行base64url编码,形成JSONWeb令牌的第二部分。

3.Signature

要创建签名部分,您必须获取编码的头、编码的有效负载、一个秘密、头中指定的算法,并对其进行签名。

例如,如果要使用hmac sha256算法,将按以下方式创建签名:

签名用于验证消息是否在过程中发生了更改,对于使用私钥签名的令牌,它还可以验证JWT的发送者是它所说的人。

 

JWT结果:输出是三个base64 URL字符串,用点分隔,这些点可以在HTML和HTTP环境中轻松传递。下面显示了一个JWT,它对前面的头和有效负载进行了编码,并用一个秘钥进行了签名:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值