Angular 和 JWT - 客户端如何验证令牌?
Posted
技术标签:
【中文标题】Angular 和 JWT - 客户端如何验证令牌?【英文标题】:Angular and JWT - how does client verify token? 【发布时间】:2017-12-04 14:49:50 【问题描述】:如果我要提供一个假的 JWT,我意识到 Angular 会在登录时“接受它”,因为大多数教程只是检查是否在 localStorage 中设置了 JWT 密钥(以及它是否没有过期。)
我在使用 JWT 时有什么遗漏吗?我觉得客户端需要检查令牌是否真的来自服务器。考虑这种情况:
用户使用看起来像 'username': 'hacker', 'role': 'admin'
的假 JWT 去路由 /#/admin
。现在用户向服务器发送一个令牌,服务器检查签名(和过期),由于秘密签名密钥错误,用户从(API)服务器收到 401/403 响应,客户端挂起(带有工具栏的空白屏幕) 因为没有来自服务器的有效响应。
用户可以用假的 JWT 绕过我的 Guard,因为他们无论如何都无法从服务器获取任何数据,这是“安全”还是“正常”?
【问题讨论】:
【参考方案1】:其实很正常。
如果用户的令牌被服务器拒绝,您应该将他注销。
即使他可以通过守卫,他也永远不会从您的管理面板中获取任何数据,因为服务器应该拒绝每个请求,因为 JWT 无效。所以你不用担心。
【讨论】:
“拒绝时注销”是我在概念上所缺少的。现在用户因拒绝而退出,用户已成功退出客户端:) 是的!如果它适合您,请不要忘记接受答案。 哦,对不起,我的错:D以上是关于Angular 和 JWT - 客户端如何验证令牌?的主要内容,如果未能解决你的问题,请参考以下文章
过期后如何刷新 JWT 令牌(Angular 1.5 + Laravel 5.2)