javascript - 使用 JWT 进行身份验证

标签 javascript authentication cookies jwt json-web-token

我一直在关注这篇博文 ( 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/

相关文章:

authentication - 如何破解基于配对图片的密码?

javascript - 从另一个域加载脚本时,无法从 PHP 读取 Internet Explorer 中的 cookie

javascript - Basic JS - 为什么这个 obj 没有更改为 undefined?

javascript - 为什么 hasOwnProperty 无法识别对象原型(prototype)上的函数?

JavaScript 方法传递参数

ssl - 无法登录私有(private) docker registry

perl - WWW::Mechanize Perl 登录仅在重新启动后有效

powershell - Invoke-RestMethod 不传递 header

tomcat - 防止跟踪 cookie(例如 google analytics)到达应用后端

javascript - 我的第一个扩展 - 单击添加书签 - 如何?