我想使用Keycloak设置Google联盟,但是仅适用于公司中的授权用户。
设置Google联合会允许任何Google帐户登录。
我查看了Keycloak上的身份验证流程,但无法找到一种方法来进行设置。我可以想到一些我希望Keycloak开箱即用的简单情况
不是在有人尝试登录时自动创建帐户,而是要求已经存在具有完全相同的电子邮件/用户名的帐户,并仅在该特定用户尝试登录时根据电子邮件将其链接。
用户首次使用Google登录时自动创建一个帐户,将其链接,但是需要管理员手动激活该帐户,然后才能使用该帐户
前两个功能的组合。启用注册,允许用户注册帐户,并要求管理员激活帐户,此时用户可以链接它们。
尽我所能尝试,我似乎无法配置它。似乎没有办法让Keycloak创建一个需要激活的帐户,并且如果我尝试创建一个不包含“唯一帐户创建”身份验证器的流程,它将立即使用户进入“无效的用户名/密码”屏幕。
我错过了什么吗?除了手动为每个用户创建一个帐户并将其链接(或者写我自己想避免的身份验证器)之外,没有其他选择吗?
答案 0 :(得分:0)
您可以实施自定义表单操作。它比您预期的要容易。
如果您不想编写代码,则可以使用已经可用的“脚本”表单操作。您可以通过以下方式进行操作:
身份验证->在下拉菜单中选择'首次经纪人登录'->对其进行复制(对其进行复制可让您对其进行编辑)。现在单击“添加执行”,然后选择“脚本”。将其向上移动到顶部,因此这是流程中的第一个表单操作。将单选按钮放在“必需”上,然后转到操作->配置。现在,在脚本中,您可以检查用户名或电子邮件以匹配模式(可能是公司的域名),如果模式匹配失败,则可以调用context.failure(..)方法,该方法已在默认脚本。
确保在身份提供商配置中选择此(新的)首次代理登录。
答案 1 :(得分:0)
如果您对来自单个域(例如 @yourco.com
)的人没有意见,您可以使用设置页面上的 Hosted Domain
参数。特别是对于 google,至少从 keycloak 11.x 开始,google 和 keycloak 都将确保用户的电子邮件地址与输入的域匹配。我不知道是否可以输入多个域。
我们所做的是使用托管域选项,并授予这些新用户一个简单的角色,允许他们登录管理面板并在一些简单的区域拥有读取权限。这使得在 Keycloak 中设置新帐户变得容易,我们只是告诉用户登录并且他们设置了基本访问权限。如果有人需要更高级的访问权限来读取私人数据甚至写入一些数据,他们必须联系我们的运营团队,他们可能会选择在 keycloak 中授予他们更多角色