我一直在读关于JWT https://jwt.io/我知道它分为三个部分,即header
, payload
and signature
.
我将哈希算法保留在标头中,将基本信息保留在有效负载中例如。姓名、年龄、职务、有效期等在有效负载中,然后这两个都经过 Base64 编码,然后使用
标头中指定的获取 JWT 的算法
- 我有一个可以使用登录的前端
username
and password
.
- 登录请求发送到服务器,服务器对其进行身份验证并返回 JWT。假设使用的算法是 HS256,它是一种对称密钥算法。
- 所以服务器会有
secret key
将使用它生成 JWT。
- 作为登录请求响应的一部分,浏览器将具有 JWT。
- 现在这个 JWT 可能会在途中被篡改,所以在使用它之前,我应该验证 JWT 的真实性。
- 为了验证,我需要密钥。
问题:
- 我如何得到这个
secret key
在前端?
- 有效负载可以保留有关用户的任何信息(不是任何敏感信息,例如密码)。既然JWT可以在途中被篡改,那么在前端没有验证JWT的情况下使用有效负载信息不是很危险吗?
接收 JWT 的服务器是验证令牌的服务器。如果有人修改了令牌,验证将失败并且访问将被拒绝,因为(希望)服务器外部没有人知道该秘密,因此无法创建有效的令牌。如果客户知道这个秘密,尤其是。在浏览器/js 环境和对称哈希算法中,这是一个很大的安全风险,有人可以窃取秘密并创建具有有效签名的新令牌。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)