【问题标题】:Not understanding JWT "Encryption"不了解 JWT “加密”
【发布时间】:2018-07-07 12:16:55
【问题描述】:

我已在 PHP 和 Angular 客户端中启动并运行 JWT。 一切都很完美。但我仍在尝试理解一些安全方面的问题,我的 Angular 客户端不知道用于加密服务器端 (PHP) 中 JWT 消息的密钥。
那么,为什么没有它可以解密呢?
钥匙不应该很重要吗?

【问题讨论】:

  • Key 仅用于验证 JWT 的签名,没有它您无法验证颁发者的身份(但可以假设它是有效的并忽略这个事实)。
  • 所以关键告诉客户端(角度),“这个答案是我提供的,PHP客户端”?
  • 不,它只是完全跳过验证发行者和令牌的完整性。

标签: security jwt


【解决方案1】:

JWT 可以是签名的、加密的或两者兼有。如果一个令牌是签名的,但没有加密,每个人都可以读取令牌的内容,但是当你不知道私钥时,你无法更改它。否则,接收方会注意到签名不再匹配。

另外:您可以转到jwt.io,粘贴您的令牌并阅读内容。起初这让很多人感到不安。

简短的回答是 JWT 不关心加密。它关心验证。也就是说,它总能得到“这个令牌的内容是否被操纵”的答案?这意味着用户对 JWT 令牌的操作是徒劳的,因为服务器会知道并忽略令牌。服务器在向客户端发出令牌时,会根据有效负载添加签名。稍后它会验证有效负载和匹配的签名。

请阅读 belove 链接了解更多信息。

jwt.io/introduction

en.wikipedia.org/wiki/JSON_Web_Token

【讨论】:

  • 我还不清楚,那么,我的令牌呢?我从 GitHub 下载了 JWT 并添加到我的项目中,并且简单明了,用我的消息和我的 $key 定义了 $token,并写了 $jwt = JWT::encode($token, $key);
  • 我的令牌加密了吗?我怎么知道?
  • @UrielChami 请检查我的附加答案
  • 一个 JWS 有 2 个点 (.) 而一个 JWE 有 4 个
猜你喜欢
  • 2017-04-08
  • 2016-12-18
  • 2023-01-14
  • 1970-01-01
  • 1970-01-01
  • 2016-09-30
  • 2019-07-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多