首页 > 解决方案 > 如何克服 Jwt 令牌验证中的安全漏洞

问题描述

我使用了 jwt 令牌保护 Angular 应用程序,在后端,我们使用了 asp.net 核心 API。成功登录后,我们已将令牌保存在 Web 浏览器内存中的本地存储中,然后我们从应用程序中注销,只需从浏览器内存中删除令牌即可。

我们可以阻止用户通过应用程序访问应用程序,但如果有些人拥有令牌,他可以使用邮递员和其他 api 测试工具访问端点。我们如何克服这个问题。有没有办法手动删除令牌或使令牌过期。

标签: asp.net-corejwt

解决方案


撤销 jwt 令牌并不容易,没有标准的方法来撤销访问令牌,除非授权服务器实现自定义逻辑,强制您将生成的访问令牌存储在数据库中,并对每个请求进行数据库检查。

一个简单的方法是使用短期访问令牌和刷新令牌,使用刷新令牌来更新访问令牌,如果要撤销用户,在服务器端撤销刷新令牌,在客户端清除刷新令牌和访问令牌。

另一种方法是引用令牌。基本思想是授权服务器将令牌的内容存储在数据存储中,并且只会将此令牌的唯一标识符发回给客户端。接收此引用的 API 必须打开与授权服务器的反向通道通信以验证令牌,以便服务器端可以控制引用令牌(唯一标识符)是否仍然可用。身份服务器 4 还提供了参考令牌功能:

http://docs.identityserver.io/en/latest/topics/reference_tokens.html


推荐阅读