- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
This article除了最后一部分,JWT 上的内容非常清晰。
我理解的部分:1.编码不同于加密。2. token的部分(header base64 encoded, payload base64 encoded, header+payload用公钥和指定算法加密的签名)
但是我不明白第5部分是如何处理token验证的。我也不明白为什么header和payload需要进行Base64编码。鉴于它不安全或加密...编码的部分是什么?
*****编辑****
我的理解是否正确,因为 JWT 包含一个编码的 header 和负载...应用服务器可以只使用它的 key (可能是非对称加密机制中的公钥)来加密包含的有效载荷和 header ,如果它到达相同的包含 JWT 签名......那么应用程序服务器知道数据没有被篡改并且用户确实通过身份验证服务器进行了身份验证。这样对吗?
如果签名不匹配。这意味着什么?
最佳答案
JWT
使用 base64Url
编码(参见 https://www.rfc-editor.org/rfc/rfc7519#section-3 ),它避免了字符 +
、/
和=
是 URI 的保留字符(参见 https://www.ietf.org/rfc/rfc2396.txt 中的第 2.2 节)
这是有道理的,因为在某些情况下, token 作为 url 中的参数传输。
如果使用非对称算法,哈希是用私钥完成的,因此任何知道公钥的人都不可能创建新的签名。
教程中的第 5 步只是告诉您,应用程序服务器将使用与身份验证服务器相同的 key 从 header 和有效负载创建哈希,并比较它是否获得与它在要求。不匹配签名的含义是有人更改了 token ,因此 token 被视为无效并且授权将被拒绝。从技术上讲,操作 JWT
的 header 和有效负载非常容易,只需解码 base64url
编码部分,更改 JSON
结构中的一些值,例如。过期时间exp
,重新编码。但是,如果不知道私钥,您将无法为其创建有效签名。
查看 https://jwt.o并在调试窗口中使用示例标记来查看效果。
关于JWT 令人困惑。应用服务器如何认证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48755092/
很抱歉新手的问题,但是: 我最近才发现“=”运算符不只是处理对象/等等。值(value),也是引用。这很酷,但我认为这对变量来说是不一样的,它不会在存储整数或 float 的变量之间创建引用。后来我觉
我是一名优秀的程序员,十分优秀!