abi*_*24m 6 authentication json token session-cookies jwt
我试图了解 JSON Web Tokens 并了解到 Base64 是其中使用的编码。由于 base64 可以轻松解码,我的问题是为什么要使用它们。为什么不使用单向哈希函数来生成令牌?
如果问题看起来很愚蠢,请原谅我
cas*_*lin 19
JSON Web Token (JWT) 是一种开放标准,它定义了一种紧凑且独立的方式,用于在各方之间以 JSON 对象的形式安全地传输信息。
事实上,JWT 是以下类型令牌的通用名称:
JSON Web 签名(JWS):有效负载经过编码和签名,以便验证声明的完整性。
JSON Web 加密(JWE):它们的有效负载经过加密,因此对其他方隐藏声明。
由于 Base64 可以轻松解码,我的问题是为什么要使用它们。
JWT 使用Base64url ,与Base64略有不同。
使用 Base64 的可能原因之一:它是一种非常流行的编码格式,并且在大多数编程语言中都很容易使用它。此外,Base64url 是URL 安全的,因此可以在 URL 中发送令牌。
为什么不使用单向哈希函数来生成令牌呢?
它违背了签名 JWT 的目的,因为接收者将无法解析令牌的内容。
你是对的,base 64 很容易解码,但是基于 64 编码的 2 个部分(标头和有效负载)并不意味着被隐藏。
只是一般性介绍,JWT 令牌由 3 个部分 nl 组成。1. header(算法) 2. Payload(用户数据) 3. 签名
标头和负载包含非敏感数据,但此数据提供了足够的信息来帮助您识别向您提供令牌的用户。因此,为了能够授予他刷新令牌或允许他访问某些资源,您需要了解有关他的一些信息,而无需用户在每次调用时提供他的凭据。
所以是的,它很容易解码,但这就是签名的第 3 部分。签名采用标头和有效负载的 base64 编码值,并使用一些密钥对它们进行哈希处理。这样做是为了当密钥从客户端进入您的后端时,我们可以首先检查有效负载(可能包含权限)是否已更改或更改,如果它们的令牌的哈希值不是不再一样了。
有关更多信息,请查看以下资源: https://jwt.io/(查看结构) https://jwt.io/introduction/(一般信息)
| 归档时间: |
|
| 查看次数: |
4039 次 |
| 最近记录: |