【发布时间】:2023-01-13 19:08:40
【问题描述】:
现在的情况
我们有一个非常通用的系统架构,有 Spring Boot 后端和 Angular 前端。对于移动应用程序,我们使用 Ionic,它基本上使用与前端相同的代码库,但添加了生物识别等附加功能。
用户登录基于 OAuth,一旦用户启动会话,就会创建访问和刷新令牌。访问令牌的生命周期很短,刷新令牌的有效期为几天。正如我所说 - 非常常见的身份验证流程。
我们想要达到的目标
- 移动应用程序用户应该只能登录一次然后使用 每次刷新令牌时无需重新登录的应用程序 到期。
- 对于“正常”的前端应用程序刷新令牌过期 政策应该保持不变,这意味着用户被强制登录 刷新令牌过期后再次。
可能的解决方案(从我的角度来看)
- 我们将附加参数传递给指定客户端的登录请求:web |移动的。如果客户端是移动刷新令牌,则有效期延长至 1-2 年。缺点:这将打破拥有令牌的整个想法,即过期。我个人认为这是一个安全问题。
- 我们将凭据存储在移动应用本地存储中。一旦会话过期,应用程序将使用凭据重新进行身份验证。缺点:同样,我认为将凭据存储在任何设备上都不是一个好主意,这会使流程容易受到攻击。
我正在寻找的是解决此问题的最佳实践。
【问题讨论】:
标签: spring-boot security oauth-2.0 architecture