我一直在关注这篇博文 ( https://auth0.com/blog/2015/04/09/adding-authentication-to-your-react-flux-app/ ),并且对 JWT 的某个方面感到困惑。
上面的帖子似乎通过检查是否有 JWT 存储为 cookie 来测试用户是否已经登录,如果有,它只是对其进行解码以查找用户名和其他信息,并将用户重定向到经过身份验证的页面。
我想知道是什么阻止某人添加假 JWT cookie 来访问应用程序的经过身份验证的部分?我一定错过了一些明显的东西。换句话说,在维护 session 时,前端如何确保 JWT 是“由服务器签名”或其他内容的 JWT,而不是为了获取访问权限而伪造的 JWT?
最佳答案
在许多应用程序中,有人可以添加假 JWT 来访问您只想让他们在登录时看到的部分前端。但是,他们也可以在自己的计算机上运行前端,并且可以更改代码来做同样的事情。
后端服务器使用前端不应存在的 key 对 JWT 进行编码,当您将 JWT 传递回服务器时,服务器将在处理您的请求之前对其进行解码。因此它知道有人之前使用了您的登录凭据,它发送了 JWT 作为响应,并且有人再次向它发送了 JWT。这可以阻止没有(真正的)JWT 的人对您的 API 的攻击。</p>
与 session cookie 相比,它还具有优势,因为它在服务器端是无状态的,并且它使传统浏览器中的某些跨站点请求伪造攻击变得更加困难,因为攻击者无法将请求嵌入到您的站点并信任浏览器添加您的 session cookie。
但这只是更大的安全解决方案的一部分。
关于javascript - 使用 JWT 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34573598/