【问题标题】:Angular and JWT - how does client verify token?Angular 和 JWT - 客户端如何验证令牌?
【发布时间】:2017-12-04 14:49:50
【问题描述】:

如果我要提供一个假的 JWT,我意识到 Angular 会在登录时“接受它”,因为大多数教程只是检查是否在 localStorage 中设置了 JWT 密钥(以及它是否没有过期。)

我在使用 JWT 时有什么遗漏吗?我觉得客户端需要检查令牌是否真的来自服务器。考虑这种情况:

用户使用看起来像 {'username': 'hacker', 'role': 'admin'} 的假 JWT 去路由 /#/admin。现在用户向服务器发送一个令牌,服务器检查签名(和过期),由于秘密签名密钥错误,用户从(API)服务器收到 401/403 响应,客户端挂起(带有工具栏的空白屏幕) 因为没有来自服务器的有效响应。

用户可以用假的 JWT 绕过我的 Guard,因为他们无论如何都无法从服务器获取任何数据,这是“安全”还是“正常”?

【问题讨论】:

    标签: angular express jwt angular-router-guards


    【解决方案1】:

    其实很正常。

    如果用户的令牌被服务器拒绝,您应该将他注销。

    即使他可以通过守卫,他也永远不会从您的管理面板中获取任何数据,因为服务器应该拒绝每个请求,因为 JWT 无效。所以你不用担心。

    【讨论】:

    • “拒绝时注销”是我在概念上所缺少的。现在用户因拒绝而退出,用户已成功退出客户端:)
    • 是的!如果它适合您,请不要忘记接受答案。
    • 哦,对不起,我的错:D
    猜你喜欢
    • 2015-09-20
    • 2018-05-18
    • 2017-10-02
    • 2018-04-20
    • 2020-01-31
    • 1970-01-01
    • 2018-10-16
    • 2013-04-27
    • 2019-05-29
    相关资源
    最近更新 更多