微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JWT令牌

概述

JWT(JSON WEB TOKEN):JSON网络令牌,JWT是一个轻便的安全跨平台传输格式,定义了一个紧凑的自包含的方式在不同实体之间传输信息(JSON格式),它是在Web环境下两个实体之间传输数据的一项标准,实际上传输的就是一个字符串

JWT能做什么

  • 授权
    • 这是jwt最常用的一个功能,当用户认证后获取一个JWT令牌,而这个 JWT 令牌包含了用户基本信息,客户端只需要携带JWT访问资源服务器,资源服务器会通过事先约定好的算法进行解析出来,然后直接对 JWT 令牌校验,不需要每次远程请求认证服务器完成授权
  • 加密
    • 通过jwt可以对参数进行签名, 后端可以通过设置拦截器验证参数的签名, 如果验证通过才真正进入后台进行处理

JWT能做什么

        SON Web Token( JWT )是一个开放的行业标准( RFC 7519 ),它定义了一种紧凑且独立的方式,用于在各方之 间作为JSON 对象安全地传输信息。此信息可以通过数字签名进行验证和信任。 JWT 可以使用秘密(使用 HMAC 算 法)或使用RSA ECDSA 的公钥 / 私钥对进行 签名 ,防止被篡改。
        JWT 官网: https://jwt.io  想深入了解的可网站查看

JWT的构成​​​​​​​

WT令牌由三部分组成,每部分中间使用点(.)分隔,比如:xxxxx.yyyyy.zzzzz

  • Header

头部包括令牌的类型(即JWT)及使用的哈希算法(如HMAC SHA256或RSA)

一个例子如下:

下边是Header部分的内容

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

将上边的内容使用Base64Url编码,得到一个字符串就是JWT令牌的第一部分。

  • Payload

第二部分是负载内容也是一个json对象,它是存放有效信息的地方,它可以存放jwt提供的现成字段,比如:iss(签发者),exp(过期时间戳), sub(面向的用户)等,也可自定义字段

此部分不建议存放敏感信息,因为此部分可以解码还原原始内容

最后将第二部分负载使用Base64Url编码,得到一个字符串就是JWT令牌的第二部分。

一个例子:

{ 
  "sub": "1234567890",
  "name": "456",
  "admin": true
}
  • Signature

第三部分是签名,此部分用于防止jwt内容被篡改。

这个部分使用base64url将前两部分进行编码,编码后使用点(.)连接组成字符串,最后使用header中声明签名算法进行签名。

一个例子:

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

base64UrlEncode(header):jwt令牌的第一部分。

base64UrlEncode(payload):jwt令牌的第二部分。

secret:签名所使用的密钥。

JWT的优缺点

  • JWT 的优点
    • JWT 基于 json,非常方便解析。
    • 可以在令牌中自定义丰富的内容,易扩展。
    • 通过非对称加密算法及数字签名技术,JWT 防止篡改,安全性高。
    • 资源服务器使用 JWT 可以不依赖认证服务器,即可完成授权。
  • JWT 的缺点:
    • JWT令牌较长,占存储空间比较大,但是用户信息是有限的,所以在可接受范围。

原文地址:https://www.jb51.cc/wenti/3287056.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐