博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jwt简术
阅读量:6093 次
发布时间:2019-06-20

本文共 1365 字,大约阅读时间需要 4 分钟。

JWT

什么是JWT

从里可以看到,JWT是一个开放协议,它以一个可靠的,独立的方式方便在各方之间以Json的方式传输数据。Jwt可以使用秘钥(HMAC算法)或者公钥/私钥(RSA or ECDSA)的方式进行签名

应用场景

授权

常用如登录,登录成功后返回JWT,后续请求都会带上这个JWT,比如SSO

信息交换

使用公钥/私钥对签名时,可以在不同对象间传输信息

JWT结构

一个典型的JWT格式如下:

xxx.yyy.zzz

可以看到JWT由三部分组成,不同部分用.结合起来

  • Header
  • Payload
  • Signature

Header

Header格式如下:

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

alg表示所使用的算法,如HMAC,SHA256, RSA

typ表示token类型,也就是 JWT
Header经过base64编码后会成为JWT的第一部分

Payload

Payload包含了一些Claims,Claims里又包含了实体和额外信息,有三种类型的Claims

  • registered
  • public
  • private

一个典型的Payload如下:

{  "sub": "1234567890",  "name": "John Doe",  "admin": true}

registered Claim

registered Claim是预定义的声明,不强制但建议使用,在里可以看到,预定义的声明有以下几种

  • iss ((Issuer) Claim)
  • sub ((Subject) Claim)
  • aud ((Audience) Claim)
  • exp ((Expiration Time) Claim)
  • nbf ((Not Before) Claim)
  • iat ((Issued At) Claim)
  • jti ((JWT ID) Claim)

public Claim

public Claim是用户可以自定义的,但是为了避免使用冲突,应该遵循规范,

private Claim

private Claim就是用来存贮交换信息的部分

Payload经过base64编码后就成为了JWT的第二部分

Signature

将编码后的Header和Payload组合在一起,再加上secret,经过指定的算法加密就形成了JWT的第三部分

HMACSHA256(  base64UrlEncode(header) + "." +  base64UrlEncode(payload),  secret)

最后用.号串联起来,最终就生成了一个JWT token

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.b21wYW55X2lkIjoiZWQ5OGE4YTMtMWMyNi00OTM5LTg0MDQtMjU0OGUyMjgzOWVmIn0sImV4cCI6MTU2NzEzNzg0NywianRpVtIn0.sAlzke31nRGU_Gh_Ux8uh9uKmCnSYgQTk02GYzE97sU

使用方法

Authorization: Bearer 

优点

  • 跨域
  • 比XML结构简单,小巧
  • 跨平台
  • 相比Session,无需落地存储

在这儿,这里是我理解翻译过来的

转载地址:http://ncwza.baihongyu.com/

你可能感兴趣的文章
Unity 3D的常用快捷键
查看>>
thinkphp-条件判断-present
查看>>
CentOS6.x使用163和epel yum源的选择
查看>>
8Manage FAS:打造交通科技企业一站式管理平台
查看>>
PHP引擎php.ini 和fastcti优化
查看>>
tomcat配置与优化
查看>>
Ubuntu学习 mv
查看>>
linux基础
查看>>
详解JS对象
查看>>
elasticsearch 前缀匹配
查看>>
precopy copy split解释
查看>>
全球最快计算机Roadrunner
查看>>
centos7下vsftpd配置
查看>>
实现一个列表变成字典的转换
查看>>
Linux学习之CentOS(三十四)--配置域主DNS服务器
查看>>
部分xcode插件可能有新版本
查看>>
Provisioning Services 7.6 入门到精通系列之一:PVS前期规划
查看>>
centos6.2 LNMP 环境安装(yum)
查看>>
python 3 用户输入和格式化输出
查看>>
9.1磁盘
查看>>