IdentityServer4深入使用(三)-- Jwt

原文地址:https://www.jeremyjone.com/793/,转载请注明。


写在之前

更多学习内容,可以看我的 .NET 学习之路系列-Jwt

什么是 JWT

Jwt,Json Web Token 是一个开放标准(RFC 7519),它定义了一种紧凑且独立的方法,用于在各方之间安全地将信息作为 JSON 对象传输。由于此信息是经过数字签名的,因此可以被验证和信任。可以使用密码(使用 HMAC 算法)或使用 RSA 或 ECDSA 的公钥/私钥对对 JWT 进行签名。

基于 Token 的鉴权机制类似于 http 协议,也是无状态的,它不需要在服务端保留用户的认证信息,这也就意味着基于 Token 认证机制的应用不需要去考虑用户在哪一台设备登录,这为应用扩展提供了便利。

什么时候使用 JWT

以下是 JWT 有用的一些情况:

  • 授权:这是使用 JWT 最常见的方案。用户登录后,每个后续请求都将包含 JWT,从而允许用户访问该令牌锁允许的路由、服务和资源。单一登录是当今广泛使用 JWT 的一项功能,因为它的开销很小并且可以在不同的域中轻松使用。

  • 信息交换:JWT 是在各方之间安全地传输信息的一种好方法。因为可以对 JWT 进行签名,所以您可以确定发件人是他们所说的人。此外,由于签名是使用标头和有效负载计算的,因此还可以验证内容是否被篡改。

JWT 的结构

JWT 以紧凑的形式将三部分内容由点(.)分隔,其三部分内容分别是:

  • 标头
  • 有效载荷
  • 签名

因此,JWT 通常如下所示:

xxxxx.yyyyy.zzzzz

标头 Header

标头通常由两部分组成:令牌类型(即 JWT)和所使用的签名算法。

算法通常为:

  • HMAC
  • SHA256
  • RSA

例如:

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

然后,此 JSON 以 Base64Url 编码格式形成 JWT 的第一部分。

有效载荷 Payload

JWT 的第二部分是有效载荷,其中包含声明。声明有关实体和其他数据声明。声明有三种类型:注册声明、公共声明以及私有声明。

  • 注册声明:这些是一组非强制性的但建议使用的预定义声明,以提供一组有用的可互操作的声明。包含:

    • iss(发布者)
    • exp(到期时间)
    • sub(主题)
    • aud (受众)

    等。需要注意,声明名称是三个字符,因为 JWT 的含义是紧凑的。

  • 公共声明:这些可以由使用 JWT 的人员随意定义。但为了避免冲突,应在

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值