【发布时间】:2021-02-03 19:30:14
【问题描述】:
许多很好的示例可以使用 ID4 和其他方法通过 PKCE 安全地获取 JWT 承载,通过刷新,从 Blazor Wasm 安全地调用 API...非常有帮助。但是所有样本都说将 JWT 存储在本地存储中。这不危险吗?我想是的,但很想错。
任何人都可以使用浏览器开发工具从本地存储复制 JWt。当然,让 JWT 短命,但是刷新令牌需要存储在某个地方,所以问题没有解决。当然,API 可以有受众和范围......但是 blazor wasm 可以从任何来源调用 API。当然,ID 提供者证书使创建具有有效 sig 的新 JWT 成为不可能……但复制的 JWT 仍然很危险。
React 和 Angular SPA 存在相同的问题,并且服务实时 Auth0 竭尽全力使用自定义 JavaScript 库来缓解这个问题。
那么,在 API 调用之间将 JWT 存储在客户端上的 Blazor 策略是什么?我们不能只注入一个内存单例来将 JWT 存储为“应用程序状态”对象的一部分吗?这种方法安全吗?有更好的想法吗? wasm 的“内存”与原生应用程序相比是否具有相当的抗黑客性?
【问题讨论】:
标签: jwt blazor webassembly