【问题标题】:User management across multiple stateless API applications跨多个无状态 API 应用程序的用户管理
【发布时间】:2018-12-19 13:36:23
【问题描述】:

我们想让我们的 API 无状态。

目前,用户的令牌是在登录时通过第 3 方提供的,并存储在应用程序内存中。

只要令牌在使用中,它就有效。直到它空闲一段可配置的时间。

在第 3 方(令牌提供者)方面,此令牌的有效期更长(例如:他们方面的一个月,无论使用情况如何,我们的空闲时间为 20 分钟)。

意思是,每次使用这个令牌都会更新应用内存中的时间戳。

作为使我们的 API 无状态的一部分,我遇到了一个问题:

假设我们将拥有多个应用程序和一个负载均衡器, 如何维护两个应用程序之间的用户管理?

如果令牌不在应用程序内存中(但在第 3 方仍然有效),我知道如何恢复用户配置文件/详细信息,但我不知道它上次使用的时间戳。

我认为我要么必须在我的应用程序之间同步缓存,要么在另一个服务上管理用户。

我希望我的解释足够清楚。

我的问题是:

  1. 解决此问题的最佳做法是什么?
  2. 在哪里可以找到有关跨多个应用程序的用户管理的有用信息?我认为在这种情况下我正在努力处理关键词。

提前致谢

【问题讨论】:

    标签: api token load-balancing user-management stateless


    【解决方案1】:

    从架构的角度来看,单独的用户管理器更可取。在这种情况下,您永远不会直接求助于您的第 3 方令牌提供商,而是通过您自己的存储令牌和时间戳的管理器来完成。然而,这可能需要进行认真的重构。

    因此,我可以提供的其他解决方案可能是使用在进程和机器之间提供共享内存的工具。例如,您可以使用Hazelcast。使用非常用户友好的 API 非常容易启动工具。例如,如果您现在在地图中存储从令牌到时间戳的映射,那么您唯一需要更改的是您创建地图的位置。使用 Hazelcast 地图工厂而不是 new HashMap<>(),您的代币将神奇地分布在您的应用程序中。

    【讨论】:

    • 感谢您的回复,我会试一试,听起来不错。
    猜你喜欢
    • 1970-01-01
    • 2020-12-02
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    • 2018-09-04
    • 1970-01-01
    • 2023-03-04
    相关资源
    最近更新 更多