上午;
我对JWT和Angular有疑问。
我希望在我的前端应用程序(使用angular开发)和使用jwt的后端服务之间进行所有交易,以确保数据的完整性。
那么角度App如何检查并验证jwt消息?我知道应用程序必须使用密钥来验证jwt数据,但问题是我应该在角应用程序中保留密钥?或者我必须假设jwt在所有情况下都有效?
亲切
答案 0 :(得分:1)
事实是你的密钥是服务器端。 Express JWT package 做得很好。
你做客户端的目的是检查它的有效性。
您可以使用Interceptor检查每个HTTP请求的完整性:Official docs on Interceptors
然后,在每个请求中,您将根据实际设置的服务器端验证JWT。 然后在实际令牌有效或无效时处理您的案例。
的链接答案 1 :(得分:0)
这取决于您如何使用JWT。通常,当JWT与每个请求一起发送回JWT(在cookie或Authorization标头中)时,将在服务器上验证签名。这是为了验证JWT未被更改。但是,如果客户端需要在JWT中使用声明,则有时最好在客户端中验证JWT的完整性。
如果JWT是使用秘密密钥签名的,则将其保存在客户端中会使该秘密具有暴露的风险-尤其是在使用基于浏览器的客户端(例如Angular)时。如果机密信息被泄露,则可以使用它对已更改的JWT进行更改和签名。
如果需要在客户端中验证JWT,则应使用私钥/公钥对分别签名和验证JWT。在客户端中具有用于验证JWT签名的公钥不会带来安全风险。顾名思义,公钥旨在供任何人使用。
jsonwebtoken包还可用于处理JWT的签名和验证。 jwt.io是一个有关JWT的好网站。