【发布时间】:2021-12-12 17:37:05
【问题描述】:
当我有我的用户的令牌时,我参与了 JWT 的实施,并且我正在 Angular 中实施身份验证保护。
在每次路由更改时,它都会调用 isAuthenticated(),
现在我有问题了。
我可以在没有密钥的情况下在前端解码 JWT 令牌以获得过期,但黑客也可以在本地存储中更改他的令牌,以增加过期时间。
如果我正确理解 JWT 概念,解决方案是
a) function isAuthenticated() call API for example backend.xxx.com/isAuthenticated, if token is valid 200 - is authenticated, else 401 - isnt authenticated.
b) validate token with same secret that is on backend.
你能告诉我什么是解决这个问题的好方法吗?我刚刚看到教程/博客上的人在没有验证它的情况下解码令牌,所以我很困惑,我理解正确
【问题讨论】:
-
您的 JWT 不会阻止恶意用户访问您的 Angular 应用程序的任何部分。将令牌检查更多地视为客户端的可用性功能,而所有数据安全性都在服务器上处理。只要您在 API 中发送特权信息之前验证令牌,能够绕过客户端 AuthGuard 的恶意用户就无关紧要,因为他们只会看到一个空白页面。顺便说一句,不要将 Token 存储在本地存储中。将其存储在内存中或 http-only cookie 中。
-
但有一种情况,用户正在使用他的常规帐户登录,并声称 ROLE_USER。在那之后,他正在改变他的主张,并提供假的 JWT TOKEN。当然,他不会收到任何机密数据,但他将能够看到管理仪表板的布局。那么这种情况我应该不关心吗?
标签: angular jwt frontend backend