json web token 似乎是保护服务器 api 免受未经授权访问的好方法,但 jwt 需要密钥。通常向服务器发出请求的人是浏览器。浏览器无法存储密钥,因为它会在 HTML 中可见。
因此,剩下的唯一选择是使用用户输入的密码,将其存储在变量中,并将其用作后续请求的密钥。问题是服务器上的密钥必须匹配,所以我必须:
- 以明文形式存储密码。显然,这不是一个好办法。
- 将 pw 存储为哈希,并在客户端上对其进行哈希处理,然后将其作为密钥传递以创建令牌。这也不太好,因为现在任何人都知道哈希方法
或者我遗漏了什么? 有没有更好的方法可以做到这一点?
JWT 应该在服务器上创建并发送给客户端(通常响应客户端使用 HTTPS 向服务器发送用户名和密码)。
客户端永远不需要知道密钥。
因此,服务器的密钥不需要与其自身以外的任何东西匹配。