【token】JWT详解1基本说明
【摘要】
什么是JWT
JWT全称JSON Web Token ,是基于RFC 7519的签名验证方法可以使用HMAC、RSA或ECDSA的公用/专用密钥对对JWT进行签名JWT可用于授权和信息交换
格式
J...
什么是JWT
- JWT全称JSON Web Token ,是基于RFC 7519的签名验证方法
- 可以使用HMAC、RSA或ECDSA的公用/专用密钥对对JWT进行签名
- JWT可用于授权和信息交换
格式
JWT通过.
进行分割,包括
- Header
- Payload
- Signature
形式为 xxxxx.yyyyy.zzzzz
格式详解
Header
header的作用是声明使用jwt,并告知是用什么加密算法
{
"alg": "HS256", //还可以是HMAC或者RSA
"typ": "JWT" //必定是JWT
}
- 1
- 2
- 3
- 4
然后通过base65url进行编码。
Payload
这部分是主要的数据,最后形如
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
- 1
- 2
- 3
- 4
- 5
和上面一样,也是base64Url编码的。
注意,JWT可以被校验不可更改,但是内容信息并不是加密的,所以不能传输机密信息!
可以是以下三种类型
registered
这里内容不强制,推荐按下面的
iss (issuer), exp (expiration time), sub (subject), aud (audience)
- 1
注意的是,name必须是三个字符
可以参考 https://www.iana.org/assignments/jwt/jwt.xhtml ,这是规定好的可以直接拿来用,一般也就够用了
public
可以随意定义,如果上面的没有需要去注册
private claims
这种也是随意定义的,但是不需要去注册
Signature 签名
根据上面header声明的加密方式,对这3部分进行加密,比如使用HMAC SHA256,就这样加密字符
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
- 1
- 2
- 3
- 4
加密后范例
最终我们会得到如下的字符串
我们可以在 https://jwt.io/#debugger-io 去校验生成的JWT是否符合规范。
使用JWT
Header
Authorization: Bearer <token>
- 1
总结
- JWT作为常用的校验方式很值得学习
- 加密字符中不能写入机密数据,因为JWT可以被解密看到,只是不能被篡改
参考资料
- https://jwt.io/
- https://tools.ietf.org/html/rfc7519#section-4.1
- https://jwt.io/#debugger-io
文章来源: coderfix.blog.csdn.net,作者:小雨青年,版权归原作者所有,如需转载,请联系作者。
原文链接:coderfix.blog.csdn.net/article/details/108766707
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)