JWT(JSON Web Tokens)

JSON Web Tokens

概念

​ JWT是个开放的定义了一种紧凑且自包含的方式, 用于在各方之间作为JSON对象安全地传输信息的开放标准.

什么时候使用JWT

  1. Authorization(登录授权): 一旦用户登录,每个后续请求将包括JWT, 从而允许用户访问该令牌允许的域名, 服务和资源(route, services, resource), 普遍用于SSO(单点登录)
  2. 信息交换: JSON Web令牌是在各方之间安全地传输信息的好方法。 因为可以对JWT进行签名(例如,使用公钥/私钥对),所以您可以确定发件人是他们所说的人。 另外,由于签名是使用标头和有效负载计算的,因此您还可以验证内容是否未被篡改。

JWT结构

JWT由三部分组成, 这些部分有 . 分割, 分别为:

  • Header: 通常以两部分组成, 令牌类型(JWT)和签名所使用的算法

    • { "alg": "HS256", "typ": "JWT" }
      
  • Payload(有效载荷): 包含claims(声明), 通常是用户数据结构和其他数据的声明. 声明有三种类型: registered, public, private

    • registered: 这是一组非强制性但是建议使用的预定义claims, 以提供一组有用的, 可互操作的claims, 可以包含: issuer(发出者), exp(到期时间), sub(主题), aud(受众)等.

    • public: 可随意定义. 但是为避免冲突,应在IANA JSON Web令牌注册表中定义它们,或将其定义为包含抗冲突名称空间的URI。

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

    • { "sub": "1234567890", "name": "John Doe", "admin": true }
      
  • Signature(签名): 签名用于验证消息在整个过程中没有更改,并且对于使用私钥进行签名的令牌,它还可以验证JWT的发送者是它所说的真实身份。

JWT如何工作

在身份验证中,当用户使用其凭据成功登录时,将返回JSON Web令牌。 由于令牌是凭据,因此必须格外小心以防止安全问题。 通常,令牌的保留时间不应超过要求的时间。

由于缺乏安全性,您也不应该将敏感的会话数据存储在浏览器中

每当用户想要访问受保护的路由或资源时,用户代理(前端)应该在授权头中使用Bearer模式发送JWT。 标头的内容应如下所示:

Authorization: Bearer <token>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值