JWT是什么-创新互联

创新互联www.cdcxhl.cn八线动态BGP香港云服务器提供商,新人活动买多久送多久,划算不套路!

成都创新互联主营南京网站建设的网络公司,主营网站建设方案,成都app软件开发公司,南京h5小程序设计搭建,南京网站营销推广欢迎南京等地区企业咨询

JWT是什么?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

jwt是什么

双方之间传递安全信息的简洁的、URL安全的表述性声明规范。JWT作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以Json对象的形式安全的传递信息。简洁(Compact): 可以通过URL,POST参数或者在HTTP header发送,因为数据量小,传输速度也很快 自包含(Self-contained):负载中包含了所有用户所需要的信息,避免了多次查询数据库。

jwt验证方式是将用户信息通过加密生成token,每次请求服务端只需要使用保存

的密钥验证token的正确性,不用再保存任何session数据了,进而服务端变得无状态,容易实现拓展。

加密前的用户信息,如:

{
    "username": "vist",
    "role": "admin",
    "expire": "2018-12-08 20:20:20"
}

客户端收到的token:

7cd357af816b907f2cc9acbe9c3b4625

JWT 结构

一个token分为3部分:

  • 头部(header)

  • 载荷(payload)

  • 签名(signature)

3个部分用“.”分隔,如:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

头部

JWT的头部分是一个JSON对象,描述元数据,通常是:

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

typ 为声明类型,指定 "JWT"

alg 为加密的算法,默认是 "HS256"

载荷

载荷(payload)是数据的载体,用来存放实际需要传递的数据信息,也是一个JSON对象。

JWT官方推荐字段:

  • iss: jwt签发者

  • sub: jwt所面向的用户

  • aud: 接收jwt的一方

  • exp: jwt的过期时间,这个过期时间必须要大于签发时间

  • nbf: 定义在什么时间之前,该jwt都是不可用的.

  • iat: jwt的签发时间

  • jti: jwt的唯一身份标识,主要用来作为一次性token,从而回避重放攻击。

也可以使用自定义字段,如:

{
    "username": "vist",
    "role": "admin"
}

签名

签名部分是对前两部分(头部,载荷)的签名,防止数据篡改。

按下列步骤生成:

1、先指定密钥(secret)

2、把头部(header)和载荷(payload)信息分别base64转换

3、使用头部(header)指定的算法加密

最终,签名(signature) = HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload),secret)

客户端得到的签名:

header.payload.signature

也可以对JWT进行再加密。

关于JWT是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联-成都网站建设公司行业资讯频道了解更多相关知识。


本文标题:JWT是什么-创新互联
本文路径:http://myzitong.com/article/hdigj.html