当前位置:网站首页>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 对象。
边栏推荐
- node uses redis
- 2022 Multi-school Second Session K Question Link with Bracket Sequence I
- leetcode:267. 回文排列 II
- Kubernetes 网络入门
- 2022杭电多校 第三场 B题 Boss Rush
- 主库预警日志报错ORA-00270
- NMS原理及其代码实现
- Software testing interview questions: Have you used some tools for software defect (Bug) management in your past software testing work? If so, please describe the process of software defect (Bug) trac
- GCC: Shield dependencies between dynamic libraries
- GCC:编译时库路径和运行时库路径
猜你喜欢

国内网站用香港服务器会被封吗?

【FreeRTOS】FreeRTOS与stm32内置堆栈的占用情况

gorm joint table query - actual combat

面试汇总:为何大厂面试官总问 Framework 的底层原理?

could not build server_names_hash, you should increase server_names_hash_bucket_size: 32

redis可视化管理软件Redis Desktop Manager2022

If capturable=False, state_steps should not be CUDA tensors

LiveVideoStackCon 2022 Shanghai Station opens tomorrow!

gorm联表查询-实战

CNI(Container Network Plugin)
随机推荐
软件测试面试题:BIOS, Fat, IDE, Sata, SCSI, Ntfs windows NT?
软件测试面试题:您如何看待软件过程改进?在您曾经工作过的企业中,是否有一些需要改进的东西呢?您期望的理想的测试人员的工作环境是怎样的?
ora-00604 ora-02429
tiup status
canvas Gaussian blur effect
JUC线程池(一): FutureTask使用
2022多校第二场 K题 Link with Bracket Sequence I
软件测试面试题:做好测试计划的关键是什么?
Inter-process communication and inter-thread communication
2021年11月网络规划设计师上午题知识点(下)
tiup status
redis可视化管理软件Redis Desktop Manager2022
软件测试面试题:软件验收测试的合格通过准则?
3. pcie.v 文件
Kubernetes 网络入门
MongoDB construction and basic operations
Helm Chart
Software Testing Interview Questions: What do you think about software process improvement? Is there something that needs improvement in the enterprise you have worked for? What do you expect the idea
CNI(Container Network Plugin)
node uses redis