3

我想使用 Keycloak 设置 Google 联盟,但仅适用于我公司的授权用户。

设置 Google 联盟允许任何 Google 帐户登录。

我查看了 Keycloak 上的身份验证流程,但我一直无法找到设置它的方法。我能想到一些我希望 Keycloak 开箱即用的简单场景

  1. 与其在有人尝试登录时自动创建帐户,不如要求已经存在具有完全相同电子邮件/用户名的帐户,并在该特定用户尝试登录时根据电子邮件链接它们。

  2. 用户第一次使用 Google 登录时自动创建一个帐户,链接它们但是需要管理员手动激活该帐户才能使用

  3. 前两种的组合。启用注册,允许用户注册一个帐户并要求管理员激活该帐户,此时用户可以链接它们。

尽我所能,我似乎无法配置它。似乎没有办法让 Keycloak 创建一个需要激活的帐户,如果我尝试创建一个不包含“唯一帐户创建”身份验证器的流程,它会立即将用户抛出一个“无效的用户名/密码”屏幕。

我错过了什么?除了手动创建一个帐户并为每个用户链接它(或编写我自己的身份验证器,我试图避免)之外,没有其他选择吗?

4

2 回答 2

1

如果您对来自单个域(例如@yourco.com)的人没问题,您可以使用Hosted Domain设置页面上的参数。特别是对于 google,至少从 keycloak 11.x 开始,google 和 keycloak 都将确保用户的电子邮件地址与输入的域匹配。我不知道是否可以输入多个域。

我们所做的是使用托管域选项,并授予这些新用户一个简单的角色,允许他们登录到管理面板并在一些简单区域具有读取权限。这使得在 Keycloak 中设置新帐户变得容易,我们只需告诉用户登录并设置基本访问权限。如果有人需要更高级的访问权限来读取私人数据甚至写入一些数据,他们必须联系我们的运营团队,他们可能会选择在 keycloak 中授予他们更多的角色

托管域参数位置

于 2021-04-21T20:48:49.370 回答
0

您可以实现自定义表单操作。这比您预期的要容易。

如果您不想编写代码,您可以使用已经可用的“脚本”表单操作。您可以通过以下方式获得它:

身份验证 -> 在下拉列表中选择“首次代理登录” -> 复制它(复制它允许您对其进行编辑)。现在单击“添加执行”并选择“脚本”。将其向上移动到顶部,因此它是流程中的第一个表单操作。将单选按钮放在“必需”上,然后转到操作-> 配置。现在在脚本中您可以检查用户名或电子邮件以匹配模式(可能是您公司的域名),如果模式匹配失败,您可以调用 context.failure(..) 方法,该方法已经在默认脚本。

确保在身份提供者配置中选择此(新)首次代理登录。

于 2018-11-25T19:58:47.067 回答