我已经在PHP和Angular Client中运行JWT了。
一切都很完美。但我仍然试图理解某些内容,安全性方面,我的Angular客户端不知道用于加密服务器端(PHP)的JWT消息的密钥。
那么,为什么它可以在没有它的情况下解密呢?
关键不应该重要吗?
答案 0 :(得分:3)
JWT可以是签名,加密或两者兼而有之。如果令牌已签名但未加密,则每个人都可以读取令牌的内容,但是当您不知道私钥时,您无法更改它。否则,接收方将注意到签名将不再匹配。
另外:您可以转到jwt.io,粘贴您的令牌并阅读内容。这对最初很多人来说很不利。
简短的回答是JWT不关心加密。它关心验证。也就是说,它总能得到“让这个令牌的内容被操纵”的答案?这意味着用户操纵JWT令牌是徒劳的,因为服务器将知道并忽略令牌。在向客户端发出令牌时,服务器会根据有效负载添加签名。稍后它会验证有效负载和匹配签名。
请阅读belove链接了解更多信息。