【问题标题】:How to create endless session for mobile app如何为移动应用程序创建无限会话
【发布时间】:2023-01-13 19:08:40
【问题描述】:

现在的情况

我们有一个非常通用的系统架构,有 Spring Boot 后端和 Angular 前端。对于移动应用程序,我们使用 Ionic,它基本上使用与前端相同的代码库,但添加了生物识别等附加功能。

用户登录基于 OAuth,一旦用户启动会话,就会创建访问和刷新令牌。访问令牌的生命周期很短,刷新令牌的有效期为几天。正如我所说 - 非常常见的身份验证流程。

我们想要达到的目标

  • 移动应用程序用户应该只能登录一次然后使用 每次刷新令牌时无需重新登录的应用程序 到期。
  • 对于“正常”的前端应用程序刷新令牌过期 政策应该保持不变,这意味着用户被强制登录 刷新令牌过期后再次。

可能的解决方案(从我的角度来看)

  • 我们将附加参数传递给指定客户端的登录请求:web |移动的。如果客户端是移动刷新令牌,则有效期延长至 1-2 年。缺点:这将打破拥有令牌的整个想法,即过期。我个人认为这是一个安全问题。
  • 我们将凭据存储在移动应用本地存储中。一旦会话过期,应用程序将使用凭据重新进行身份验证。缺点:同样,我认为将凭据存储在任何设备上都不是一个好主意,这会使流程容易受到攻击。

我正在寻找的是解决此问题的最佳实践。

【问题讨论】:

    标签: spring-boot security oauth-2.0 architecture


    【解决方案1】:

    撇开安全争论不谈,您可以:

    1. 创建(如果您还没有)一个刷新身份验证令牌的端点,然后您可以在后台定期从应用程序调用该端点(例如每天一次)。
    2. 实施刷新令牌策略并添加到期日期字段并将令牌存储在数据库中。然后,如果身份验证令牌过期,请使用刷新令牌获取新令牌。

      希望能帮助到你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-24
      • 2014-04-22
      • 2016-09-15
      • 2011-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多