当前位置:网站首页>JWT简单介绍
JWT简单介绍
2022-08-05 00:44:00 【周雨彤的小迷弟】
1、访问令牌的类型
By reference token (透明令牌)
随机生成的字符串标识符,无法简单猜测授权服务器如何颁发和存储
资源服务器必须通过后端渠道将token发送回OAuth2授权服务器的令牌检查端点,才能校验令牌是否有效,并获取claims、scopes等额外信息By value token (自包含令牌)
授权服务器颁发的令牌,包含关于用户的元数据和声明(claims)
通过检查签名,期望的颁发者(issuer),期望的接收者aud(audience),或者scope,资源服务器可以在本地校验令牌。经常使用的有 JSON Web
Tokens(JWT)
2、JWT的组成

该对象为一个很长的字符串,字符之间通过"."分隔符分为三个子串。
每一个子串表示了一个功能块,总共有以下三个部分:JWT 头、有效载荷和签名
JWT头
JWT 头部分是一个描述 JWT 元数据的 JSON 对象,通常如下所示
{
"alg": "HS256",
"typ": "JWT"
}
在上面的代码中,alg 属性表示签名使用的算法,默认为 HMAC SHA256(写为 HS256);typ 属性表示令牌的类型,JWT 令牌统一写为 JWT。最后,使用 Base64 URL 算法将上述JSON 对象转换为字符串保存。
有效载荷
有效载荷部分,是 JWT 的主体内容部分,也是一个 JSON 对象,包含需要传递的数据。 JWT指定七个默认字段供选择。
- iss:发行人
- exp:到期时间
- sub:主题
- aud:用户
- nbf:在此之前不可用
- iat:发布时间
- jti:JWT ID 用于标识该 JWT
除以上默认字段外,我们还可以自定义私有字段,如下例:
{
"sub": "1234567890",
"name": "Helen",
"admin": true
}
请注意,默认情况下 JWT 是未加密的,任何人都可以解读其内容,因此不要构建隐私信息字段,存放保密信息,以防止信息泄露。
JSON 对象也使用 Base64 URL 算法转换为字符串保存。
签名哈希
签名哈希部分是对上面两部分数据签名,通过指定的算法生成哈希,以确保数据不会被篡改。
首先,需要指定一个密码(secret)。该密码仅仅为保存在服务器中,并且不能向用户公开。然后,使用标头中指定的签名算法(默认情况下为 HMAC SHA256)根据以下公式生成签名
HMACSHA256(base64UrlEncode(header) + “.” + base64UrlEncode(claims), secret)
在计算出签名哈希后,JWT 头,有效载荷和签名哈希的三个部分组合成一个字符串,每个部分用"."分隔,就构成整个 JWT 对象。
边栏推荐
- could not build server_names_hash, you should increase server_names_hash_bucket_size: 32
- 2021年11月网络规划设计师上午题知识点(下)
- JUC thread pool (1): FutureTask use
- Software testing interview questions: the difference and connection between black box testing, white box testing, and unit testing, integration testing, system testing, and acceptance testing?
- Software Testing Interview Questions: What Are the Types of Software Testing?
- GCC:头文件和库文件的路径
- 如何用 Solidity 创建一个“Hello World”智能合约
- tensor.nozero(), mask, [mask]
- PCIe 核配置
- 软件测试面试题:BIOS, Fat, IDE, Sata, SCSI, Ntfs windows NT?
猜你喜欢

oracle create user

leetcode: 266. All Palindromic Permutations

MongoDB construction and basic operations

Theory of Software Fundamentals

5.PCIe官方示例
![[230] Execute command error after connecting to Redis MISCONF Redis is configured to save RDB snapshots](/img/fa/5bdc81b1ebfc22d31f42da34427f3e.png)
[230] Execute command error after connecting to Redis MISCONF Redis is configured to save RDB snapshots

创意代码表白

Kubernetes 网络入门

仅3w报价B站up主竟带来1200w播放!品牌高性价比B站投放标杆!

Lattice PCIe 学习 1
随机推荐
GCC:编译时库路径和运行时库路径
软件测试面试题:设计测试用例时应该考虑哪些方面,即不同的测试用例针对那些方面进行测试?
canvas Gaussian blur effect
FSAWS 的全球基础设施和网络
工具类总结
软件测试面试题:您以往所从事的软件测试工作中,是否使用了一些工具来进行软件缺陷(Bug)的管理?如果有,请结合该工具描述软件缺陷(Bug)跟踪管理的流程?
Software testing interview questions: What stages should a complete set of tests consist of?
动态规划/背包问题总结/小结——01背包、完全背包
2022 Hangzhou Electric Multi-School Training Session 3 1009 Package Delivery
tiup update
E - Distance Sequence (prefix and optimized dp
2022杭电多校第三场 L题 Two Permutations
[230]连接Redis后执行命令错误 MISCONF Redis is configured to save RDB snapshots
BC(转)[js]js计算两个时间相差天数
Software testing interview questions: the difference and connection between black box testing, white box testing, and unit testing, integration testing, system testing, and acceptance testing?
软件测试面试题:测试生命周期,测试过程分为几个阶段,以及各阶段的含义及使用的方法?
After the staged testing is complete, have you performed defect analysis?
Will domestic websites use Hong Kong servers be blocked?
软件测试面试题:测试用例通常包括那些内容?
SV 类的虚方法 多态