asp.net-core - 如何克服 Jwt 令牌验证中的安全漏洞
问题描述
我使用了 jwt 令牌保护 Angular 应用程序,在后端,我们使用了 asp.net 核心 API。成功登录后,我们已将令牌保存在 Web 浏览器内存中的本地存储中,然后我们从应用程序中注销,只需从浏览器内存中删除令牌即可。
我们可以阻止用户通过应用程序访问应用程序,但如果有些人拥有令牌,他可以使用邮递员和其他 api 测试工具访问端点。我们如何克服这个问题。有没有办法手动删除令牌或使令牌过期。
解决方案
撤销 jwt 令牌并不容易,没有标准的方法来撤销访问令牌,除非授权服务器实现自定义逻辑,强制您将生成的访问令牌存储在数据库中,并对每个请求进行数据库检查。
一个简单的方法是使用短期访问令牌和刷新令牌,使用刷新令牌来更新访问令牌,如果要撤销用户,在服务器端撤销刷新令牌,在客户端清除刷新令牌和访问令牌。
另一种方法是引用令牌。基本思想是授权服务器将令牌的内容存储在数据存储中,并且只会将此令牌的唯一标识符发回给客户端。接收此引用的 API 必须打开与授权服务器的反向通道通信以验证令牌,以便服务器端可以控制引用令牌(唯一标识符)是否仍然可用。身份服务器 4 还提供了参考令牌功能:
http://docs.identityserver.io/en/latest/topics/reference_tokens.html
推荐阅读
- xpath - 如何在 pmd 中编写 xpath 规则以识别第三方 jar 的已弃用 api
- python - 如何在 IPython 中为自定义类的实例启用特定的选项卡完成功能?
- python - 获取共享相同列表值及其公共值的所有字典键的字典
- ruby-on-rails - 将 sqlite 更改为 pg
- excel - 我的代码在保存文件名中包含日期和时间的文件时显示错误消息
- .net-core - 如何通过管道 UI 将自包含的 dotnet 核心包发布到 azure 工件?
- aws-lambda - 从 kinesis 数据流触发 lambda
- multithreading - 如何实现看门狗定时器来检查非主线程中的网络问题并采取一些措施?
- google-bigquery - 在 BigQuery 中使用 UNNEST 函数
- node.js - 类型错误回调不是 Nodejs 中的函数