在浏览器上验证 JWT

2024-05-11

我一直在读关于JWT https://jwt.io/我知道它分为三个部分,即header, payload and signature.

我将哈希算法保留在标头中,将基本信息保留在有效负载中例如。姓名、年龄、职务、有效期等在有效负载中,然后这两个都经过 Base64 编码,然后使用 标头中指定的获取 JWT 的算法

  1. 我有一个可以使用登录的前端username and password.
  2. 登录请求发送到服务器,服务器对其进行身份验证并返回 JWT。假设使用的算法是 HS256,它是一种对称密钥算法。
  3. 所以服务器会有secret key将使用它生成 JWT。
  4. 作为登录请求响应的一部分,浏览器将具有 JWT。
  5. 现在这个 JWT 可能会在途中被篡改,所以在使用它之前,我应该验证 JWT 的真实性。
  6. 为了验证,我需要密钥。

问题:

  1. 我如何得到这个secret key在前端?
  2. 有效负载可以保留有关用户的任何信息(不是任何敏感信息,例如密码)。既然JWT可以在途中被篡改,那么在前端没有验证JWT的情况下使用有效负载信息不是很危险吗?

接收 JWT 的服务器是验证令牌的服务器。如果有人修改了令牌,验证将失败并且访问将被拒绝,因为(希望)服务器外部没有人知道该秘密,因此无法创建有效的令牌。如果客户知道这个秘密,尤其是。在浏览器/js 环境和对称哈希算法中,这是一个很大的安全风险,有人可以窃取秘密并创建具有有效签名的新令牌。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在浏览器上验证 JWT 的相关文章

  • App Engine 的 Google Cloud Storage 身份验证

    我们希望开始使用 Google Cloud Storage 作为用户上传文件的持久存储 不幸的是 我无法添加应用程序标识 应用程序 ID appspot gserviceaccount com 到我们的 团队 因为我们的团队基于 Googl
  • Identity Server 4:添加访问令牌的声明

    我正在使用 Identity Server 4 和隐式流 并且想要向访问令牌添加一些声明 新的声明或属性是 tenantId 和 langId 我已将 langId 添加为我的范围之一 如下所示 然后通过身份服务器请求 但我也获得了tena
  • 使用 SimpleMembership 获取用户信息

    仍在尝试使用 MVC4 来掌握新的 SimpleMembership 我更改了模型以包含名字和姓氏 效果很好 我想更改登录时显示的信息 而不是在视图中使用 User Identity Name 我想做类似 User Identity For
  • 解密签名并验证 JWT

    我知道还有其他库可以让我更轻松地使用 JWT 在 Node js 中 在本例中 我使用 crypto js 以手动方式学习 JWT 以下给了我令牌 var header alg HS256 typ JWT var wordArrayHead
  • 无需代理转发的 SSH 跳转主机

    虽然是一个简单的问题 但我已经搜索了几天没有成功 M My machine J Jump Host S Server Jump Host has my public key on authorized keys Server has J s
  • 为 ASP.NET MVC 实现自定义登录

    我是 ASP NET MVC 的新手 需要一些关于如何实现以下内容的建议 该站点是一个使用率很高的站点 内部 内联网 约有 200 个用户 我们使用表单身份验证来访问 SQL Server DB 不是 Windows 集成 有些操作受到保护
  • 在 Django Admin 中隐藏 Auth 部分 [重复]

    这个问题在这里已经有答案了 在 Django 管理中 有什么方法可以隐藏 Auth 部分吗 假设这是 Django 和准系统项目的全新安装 没有应用程序 只有管理员 您可以使用admin site unregister from djang
  • 如何正确处理 JWT 刷新?

    我有一个安卓应用程序 它连接到一个REST API开发与Jersey 我的 REST 端点通过令牌进行保护 下面是我生成它们的方法 Algorithm algorithm Algorithm HMAC256 secret String to
  • 在 keycloak 令牌中使用“sub”声明作为内部数据库中的用户 ID 是否安全

    我正在开发一个将来可能支持社交登录的应用程序 除了我们自己的 keycloak 用户名 电子邮件注册之外 我正在尝试确定使用 keycloak ID 令牌中的 sub 声明作为我们内部 mongo 数据库中用户的主键 id 字段 是否安全
  • HttpURLConnection 在 Android 2.x 中工作正常,但在 4.1 中不行:未发现身份验证挑战

    我有一些典型的代码 它们使用 HttpURLConnection 来获取带有 URL 的文件 它们在 android 1 x 和 2 x 中运行良好 但在Android 4 1中失败了 我在网上搜索了一下 但几乎没有找到类似的信息 有人愿意
  • 新站点预计支持哪些知名 OpenID 提供商?

    我计划开发一个支持 OpenID Connect 作为依赖方的 Web 应用程序 以便该应用程序的用户可以使用他选择的身份提供商进行注册和登录 这与每个 Stack Exchange 站点上的 我的登录 使用的技术相同 该应用程序可供服务器
  • 当角度4中令牌过期时如何重定向到注销

    我有一个 Angular 4 应用程序 我在那里使用 JWT 令牌进行身份验证 一切正常 但我给 JWT 令牌的令牌过期时间是 1 小时 一旦服务器端的令牌过期 我想从前端应用程序中注销用户 在节点后端 我使用快速中间件通过检查所有请求是否
  • 在本地安全存储用于 Web 服务的密码

    我有一个应用程序 通过发送用户名和密码来对第三方 Web 服务进行身份验证 目前 我每次启动应用程序时都会在 winform 上输入密码 但我需要它自动登录 我想比更安全地存储用户名 密码 Dim username as String us
  • 在 Swift 中解码 JSON Web 令牌

    尝试在 Swift 中解码 JWT 有效负载 但遇到了很大的困难 static func decodePayload tokenstr String splitting JWT to extract payload let arr spli
  • 通过 Python 登录 Apple

    我确实在 python 中使用苹果登录时遇到了问题 但它主要不是 python 只是神秘的东西 所以 我读了这篇文章https medium com aamishbaloch sign in with apple in your djang
  • JWT 令牌中允许使用哪些字符?

    我看到 JWT 令牌由 A Z a Z 0 9 和特殊字符组成 and 我想知道 JWT 令牌中允许的字符列表 来自智威汤逊介绍 https jwt io introduction 输出是三个用点分隔的 Base64 URL 字符串 Bas
  • laravel 4 登录验证失败

    在 Laravel4 中 我在路由中编写了以下代码 但它总是将我重定向到登录页面 我用谷歌搜索并在堆栈溢出上找到了它 并尝试了所有解决方案但没有成功 我确信这将是一个愚蠢的错误 但请跟踪它 谢谢 Routes Route post logi
  • 确定用于映射网络驱动器的域和用户名

    使用带有 SP1 的 Windows 7 Enterprise 但我希望得到适用于 Windows XP 2003 2008 Vista 7 的通用答案 从命令提示符处 我执行net use命令将 Z 驱动器映射到另一台计算机上的共享 但我
  • Firebase GAS webapp Google 弹出窗口消失

    我正在尝试升级我的 firebase GAS web 应用程序 之前我有一个弹出窗口 可以让用户使用 Google 登录 我不确定我做错了什么 但我已经升级到新的 firebase 现在正在尝试使用新的代码格式进行相同的登录 发生的情况是
  • 我们是否需要在客户端/消费者处验证 JSON Web Token?

    我正在研究一些有关 JSON Web Token 的知识 我知道 header claims 由密钥签名 编码结果连接到 header claims signature 并最终发送回客户端 我有一些基本的疑问 我们是否需要在客户端 消费者处

随机推荐