【发布时间】:2019-01-25 08:01:47
【问题描述】:
我一直在阅读有关JWT 的信息,我知道它包含三个部分,即header、payload 和signature。
我保留了标头中使用的散列算法,有效载荷中的基本信息例如。有效载荷中的名称、年龄、角色、到期等,然后将这两者都进行 base64 编码,然后使用 标头中指定的算法以获取 JWT
- 我有一个可以使用
username和password登录的前端。 - 登录请求发送到服务器,该服务器对其进行身份验证并返回 JWT。假设使用的算法是 HS256,它是一种对称密钥算法。
- 因此服务器将拥有
secret key,将使用它来生成 JWT。 - 作为登录请求响应的一部分,浏览器将拥有 JWT。
- 现在这个 JWT 可能会在途中被篡改,所以在使用它之前,我应该验证 JWT 的真实性。
- 为了验证,我需要密钥。
问题:
- 如何在前端获取此
secret key? - 有效负载可以保留有关用户的任何信息(不是任何敏感信息,例如密码)。既然 JWT 中途可能被篡改,那么在前端不验证 JWT 的情况下使用 payload 信息是不是很危险?
【问题讨论】:
-
根据您使用的语言,已经有大量经过全面测试且可用的 JWT 库,因此您不必自己手动完成。
-
@Morgan 你能指点我一些链接,告诉我它是如何做到的。无论如何,在前端它将需要密钥。我想看看它是如何安全地提供给前端的。
-
您链接到的站点有一个适用于各种平台的 JWT 解码库列表。检查此stackoverflow.com/questions/38552003/… 以解码令牌客户端
-
@Ash 我不关心解码。关于如何在前端验证令牌
标签: authentication jwt