IT袋

当前位置:主页 > 经验教程 > 建站编程 >

常用认证机制有哪些

常用认证机制有哪些 "常见的身份验证方式有哪些?"(3)

时间:2023-11-22 10:23:19 来源:IT袋 作者:马勇
导读:常用认证机制有哪些,适用于分布式站点的单点登录(SSO)场景 。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源

常用认证机制有哪些

适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可被加密。

5.2. JWT的数据结构

JWT其实就是一个很长的字符串,字符之间通过”.”分隔符分为三个子串,各字串之间没有换行符。每一个子串表示了一个功能块,总共有三个部分:JWT头(header)有效载荷(payload)签名(signature)

如下图所示:

常用认证机制有哪些

5.2.1. JWT头

JWT头是一个描述JWT元数据的JSON对象,通常如下所示:

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

alg:表示签名使用的算法,默认为HMAC SHA256(写为HS256)

typ:表示令牌的类型,JWT令牌统一写为JWT

最后,使用Base64 URL算法将上述JSON对象转换为字符串

5.2.2. 有效载荷

有效载荷,是JWT的主体内容部分,也是一个JSON对象,包含需要传递的数据。

有效载荷部分规定有如下七个默认字段供选择

iss:发行人
exp:到期时间
sub:主题
aud:用户
nbf:在此之前不可用
iat:发布时间
jti:JWT ID用于标识该JWT

除以上默认字段外,还可以自定义私有字段

最后,同样使用Base64 URL算法将有效载荷部分JSON对象转换为字符串

5.2.3. 签名

签名实际上是一个加密的过程,是对上面两部分数据通过指定的算法生成哈希,以确保数据不会被篡改。

首先需要指定一个密码(secret),该密码仅仅保存在服务器中,并且不能向用户公开。然后使用JWT头中指定的签名算法(默认情况下为HMAC SHA256),根据以下公式生成签名哈希:

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

在计算出签名哈希后,JWT头,有效载荷和签名哈希的三个部分组合成一个字符串,每个部分用”.”分隔,就构成整个JWT对象

5.3. JWT签名算法

JWT签名算法中,一般有两个选择:

  • HS256:HS256 (带有 SHA-256 的 HMAC )是一种对称加密算法, 双方之间仅共享一个密钥。由于使用相同的密钥生成签名和验证签名, 因此必须注意确保密钥不被泄密
  • RS256:RS256 (采用SHA-256 的 RSA 签名) 是一种非对称加密算法, 它使用公共/私钥对: JWT的提供方采用私钥生成签名, JWT 的使用方获取公钥以验证签名

相关阅读

  • 服务器安全措施 服务器安全策略怎么做?

    服务器安全措施 服务器安全策略怎么做?

    跟大家聊一聊服务器安全措施方面的介绍,一起来看看吧! 随着互联网技术的发展,服务器已经成为现代社会中不可或缺的一部分。作为企业和组织的重要基础设施之一,服务器安全性也变得

  • 视频是什么格式 常见的网站视频格式后缀都有哪些

    视频是什么格式 常见的网站视频格式后缀都有哪些

    关于常见的网站视频格式后缀都有哪些和视频是什么格式方面的内容,如有不对的地方欢迎指正! 很多人问视频格式的事,今天系统地帮大家整理一下。 视频格式用于存储视频、音频、和字幕

  • OSPFv3设备类型有哪些 OSPFv3有哪些设备类型?

    OSPFv3设备类型有哪些 OSPFv3有哪些设备类型?

    为关注IT袋网网的网友们详解OSPFv3设备类型有哪些方面的知识,请看下面详细的介绍。 在OSPFv3(Open Shortest Path First version 3)协议中,不同的设备扮演着关键的角色,协同工作来构建稳定、高效

  • 如何运用Ruby语言创建一个DNS查询

    如何运用Ruby语言创建一个DNS查询

    今天为大家介绍如何运用Ruby语言创建一个DNS查询的电脑方面的小经验,继续往下看吧! 大家好!前段时间我写了一篇关于“如何用 Go 语言建立一个简易的 DNS 解析器”的帖子。 那篇帖子里我