迁移身份提供者,保留用户 ID 和迁移策略(Auth 0 等)

Migrating Identity Providers, retaining user ID's & Migration strategy (Auth 0 etc)

我的 IDP 经历了一些成长的烦恼。我们目前使用的是一个开源系统,需要进行一些升级才能安全合规。但是,我有足够多的用户提供的迁移选项是完全无法接受的table(1 个月+ 停机时间)。

我开发了一个脚本来自动迁移用户,但是 API 给用户分配了一个新的 ID。我依靠这个 ID 来映射其他服务(购买等),我需要确保这个 ID 保持不变。

好的。看来我刚刚长大了这个 IDP?

选项 1:更改 IDP:当我调查其他 IDP(例如 Auth-0)时,none 提供任何选项来保留我当前用户的 ID - 有些提供链接帐户的选项,但没有从此链接的查找选项ID(基本上是我的主要 ID)-

选项 2:使用脚本手动更改 IDP。我研究过手动更改 ID。但我觉得这太冒险了,更不用说我得到的结果千差万别。

选项 3:日落期 - 在这种情况下,我只是混淆了一个安全问题,它需要我在一段时间内保持过时的安全活动(更不用说增加的成本)..

选项 4 - 停工一个月,暂停 registrations/growth - 解决这个问题。如果可能的话,我想不惜一切代价避免这是一个非常痛苦的选择。

我难以辨别的是社区在这种情况下做了什么?许多其他资源都与此 ID 相关联,因此我不能简单地更改它。我在这里缺少 "best practice" 吗?如果是这样,您将如何处理此迁移问题?我考虑过在用户 ID 和我们用来识别的任何 ID 之间进行查找 table。这会在我使用的任何 IDP 和 ID 本身之间添加一个 buffer/proxy,这样以后就不会再发生这种情况。

我想知道的是:迁移 databases/IDP 并保留用户 ID 的最佳做法是什么?

谢谢!

考虑到我一直无法找到对这个问题的回答,或者一个令人满意的答案(RedHat 等的所有线索都是死胡同)- 我想我会更新这个 post 关于我的解决方案(尽管无法分享)。

最后,我的解决方案是开发一个脚本,利用多线程和并发的优势,使用 Keycloak 自带的 API 批量创建用户。在 3 小时内超过 1/2 百万用户。这揭示了下一个问题:尽管 Keycloak 文档清楚地说明它接受 ID,但它在创建时对这些信息没有任何作用。这是一个问题,因为与 IDP ID 的旧关系意味着更改 ID 会破坏一切。

因此,后续解决方案是启用此脚本生成一个 MYSQL 脚本,该脚本可以是 运行 post-processing 来修复 ID。

因此,我们能够将 Keycloak 更新到最新版本,并且还没有看到直接数据库操作的任何后果。如果您正在等待 keycloak 开发更好的迁移方法:我的建议是不要。从我们可以确定的情况来看,我们可能是 KC 用户,拥有我们所见过的最多用户之一。

如有任何与此相关的问题,我很乐意回答。请随时给我发电子邮件。