python - 我是否必须为每个请求验证 JWT 令牌?
问题描述
我们有一个 API,我们有几个客户端应用程序(app、webapp 等)。
我们正在使用 Firebase 身份验证(https://firebase.google.com/docs/auth/admin/verify-id-tokens);我很容易验证在我的客户端 SDK 上生成的 JWT 令牌的完整性,但是,我面临一个小问题。
每个请求,我们在 HTTP 标头中传递一个身份验证令牌/jwt 令牌,以确保每个调用都经过身份验证。这会产生大量开销,因为每个令牌完整性检查平均占用大约 200-400 毫秒。
我正在考虑将密钥存储在内存中或具有 ( exp
) 到期时间的东西中,但我不确定这是否是一个很好的解决方案。我只会用给出的一大串密钥来验证密钥,当密钥到期日期清除时,它就会清除。
我应该如何处理这个?有没有办法绕过时间开销?
谢谢!
解决方案
时间真的花在验证令牌上吗?您可能想看看是否可以准确地看到它的去向,因为解码令牌应该非常快。但是,如果您每次都在检索帐户的公钥,那当然可以部分解释。
exp
除此之外,只要该令牌未过期,缓存令牌或任何其他解码信息就没有错。事实上,这是一个相当标准的空间与时间权衡。请记住,您将为那里的每个令牌使用内存,因此随着您获得更多并发用户,这将累加。
推荐阅读
- flutter - Flutter:使用自定义索引迭代地图
- angular - 为什么 mat-dialog 回调中的事件已发送但未收到?
- spring-batch - Spring批处理循环调用Rest API
- python - Python 请求不能在 heroku 上工作,因为它在本地主机上工作
- python-3.x - 按pyplot.pcolormesh中的值对单元格着色?
- python - Pyinstaller 因为这个 json 错误而失败?
- javascript - 在 Chrome 自定义选项卡中加载请求标头保护的 HTML 文件
- c - C结构或数组设计几何库
- php - 检查更新是否成功并回显
- python - Django过滤器ORM Q