JWT

JWT是一种开放标准RFC7519,用于在网络双方间安全地传递信息。它由Header、Payload和Signature三部分组成,常用于身份认证和信息交换。JWT自包含的特点使其在SSO等场景下广泛应用。

概述

JWT是一种开放标准RFC7519, 用于双方之间传递安全信息的表述性声明规范。

特点

  1. 简洁: 通过URL,POST参数或者HTTP的header发送

  2. 自包含: 负载中包含了所有用户所需要的信息,避免多次查询数据库。

应用场景

  1. 身份认证 用户一旦完成了登录,在接下来的每个请求中包含JWT,用来验证用户身份和资源访问权限。在sso中比较广泛的使用。

  2. 信息交换 在通信的双方之间使用JWT对数据进行编码,签名。可以确保信息没有伪造。

JWT的结构

包含三个部分

  • Header头部

  • Payload负载

  • Signature签名

格式输出是一个以.分隔的三段BASE64编码,如同:

xxxx.yyyyy.zzz

Header

通常包含两个部分: token的类型,和采用的加密算法 如:

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

接着使用Base64URL编码组成JWT结构的第一部分

 

Payload

包含了claim。 Claim是一些实体的状态和额外的元数据,有三种类型的claim: resserved, public, private.

  • Reserved: JWT预定义字段, 不强制使用,但是推荐使用,常用的有: iss(签发者) , exp(过期时间戳) , sub(面向的用户) , aud(接收方) , iat(签发时间)。

  • Public: 根据需要定义自己的字段 ,应该避免冲突。

  • Private: 自定义字段,用来在双方之间交换信息。

如:

  {
      "sub": "12312",
      "name": "Peter",
      "admin": true
  }

经过 Base64Url 编码后作为JWT结构的第二部分。

Signature

创建签名使用编码后的header, payload以及一个密钥。使用header中指定的签名算法进行签名。 如果header中指定的算法为HMAC SHA256:

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值