Keycloak 中的多租户可以在一个领域内完成吗?

Posted

技术标签:

【中文标题】Keycloak 中的多租户可以在一个领域内完成吗?【英文标题】:Can multi-tenancy in Keycloak be done within a single realm? 【发布时间】:2019-11-03 04:01:05 【问题描述】:

首先,我非常了解 Keycloak 中的多领域多租户方法。我接手了一个没有人想到多租户的遗留项目。现在,两年后,突然,客户需要这个功能。实际上,微服务已经为这种场景做好了开箱即用的准备。

客户开发了一个移动应用程序,该应用程序通过我们的 keycloak 实例上的 API 使用帐号(作为用户名)和密码对用户进行身份验证。现在,他想在登录信息中添加租户 ID。

客户希望避免使用多个端点作为多领域解决方案的要求。

第一个想法是在注册时连接租户 ID 和帐户 ID。但这是一种臭名昭著的方法。

所以,我的想法是,可能有一种方法可以配置 Keycloak,即我添加一个自定义的 tenantid 字段和 username,就像数据库世界中的复合主键一样。

这样的配置可能吗?还有其他方法可以使用单个领域实现多租户行为吗?

【问题讨论】:

每个人都使用 keycloak 实现多租户,具体取决于他们的用例,一些使用角色,一些使用组***.com/questions/55641667/…。也可以使用用户属性来存储tenantid 如果用户名在所有租户中不是唯一的,您将需要在登录时指定租户 ID。你想怎么提供?您使用 Keycloak 的身份验证流程,还是真的使用自定义构建的 API?如果是这样,API 调用的结果是什么?只是yes(用户名/密码正确)还是no(用户名/密码错误)? “客户希望避免使用多个端点作为多领域解决方案的要求。”您只需要多个领域,URL 仅在一点不同(领域的名称)。使 keycloak 请求变得灵活应该没问题。 【参考方案1】:

我不能肯定,但经过一番研究,我发现了这个:

本网站列出了所有这些以及更多信息:

https://lists.jboss.org/pipermail/keycloak-user/2017-June/010854.html

检查一下,它可能有助于您在 key-cloak 中组织数据。

【讨论】:

此设置主要与委派管理相关,即有多个用户组,每个组可以有自己的管理员。它还没有真正起作用:预览功能Fine grain admin permission 向前迈出了一大步,但还不能让本地管理员创建新用户,因为无法强制新用户属于本地组。 是的,没错。应该把它放在答案中。嗯,链接就在那里。它可能只是帮助@dajood 学习一些东西并解决这个问题。不过不确定。 这可能仍然是一种有趣的方法。但它需要在所有租户中唯一的用户名。所以那部分问题没有解决。 同意。需要更多研究来解决问题的另一部分。

以上是关于Keycloak 中的多租户可以在一个领域内完成吗?的主要内容,如果未能解决你的问题,请参考以下文章

是否有一种优雅的方法可以为多租户应用程序克隆具有所有配置(客户端和角色)的 Keycloak 领域?

Spring Boot Keycloak 多租户配置

Keycloak Spring 多租户空指针异常

KeyCloak - 以编程方式创建领域/用户/组?

只需几分钟,即可部署安全的多租户Kubernetes !

Shiro 的多租户