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 - 客户端如何验证令牌?的主要内容,如果未能解决你的问题,请参考以下文章

PHP中的Auth0 JWT令牌验证

过期后如何刷新 JWT 令牌(Angular 1.5 + Laravel 5.2)

使用 JWT 进行环回身份验证

JWT 未解码“JWT 格式错误”-Node Angular

如何验证请求标头、JWT 令牌

在客户端存储 JWT 令牌的位置以及如何保护它? [复制]