Keycloak:如何仅通过身份提供者登录

11

我有一个Keycloak Broker和两个身份提供者正在运行。目前,在broker登录界面上,我看到了用户名和密码字段以及配置的两个身份提供者的链接。通过身份提供者进行登录需要点击IP链接。

如何禁用/删除用户名/密码字段?因为我希望仅提供身份提供者来登录我的客户端(而没有通过Broker直接登录的可能性)?

2个回答

13

有一些开箱即用的功能可能可用。

如果您只需要一个默认的身份提供者,可以为您的域配置默认身份提供者。这将跳过Keycloak登录页面并直接将用户重定向到身份提供者。更多信息:https://www.keycloak.org/docs/latest/server_admin/index.html#default_identity_provider

对于多个身份提供者,这种方法不适用 - 但是您可以使用客户端建议的身份提供者功能(https://www.keycloak.org/docs/latest/server_admin/index.html#_client_suggested_idp)。通过在指向Keycloak登录页面的链接上添加kc_idp_hint查询字符串参数,它将跳过登录并直接进入该IdP。在Web应用程序中,您可以构建每个提供程序的一组链接或按钮,并将kc_idp_hint添加到其中。但是,这不能阻止聪明人仍然访问普通的Keycloak登录页面。

创建自己的登录主题可能是最直接的方法,但我想提出这些选项以防其他人发现它有用。


谢谢提供的信息。客户建议的身份验证提供方可能对我们有所帮助。我已经尝试过了。 - hb70muc
主题/CSS解决方案的问题在于,即使您删除了表单字段,用户仍然可以从Keycloak上的/account端点为自己创建用户名/密码,而不管他们是否通过IdP登录。然后,即使禁用了IdP帐户,稍后也很容易通过用户名/密码登录。我认为这是一个严重的安全问题。 - GGGforce
1
您可以在此处找到确保IDP用户无法使用本地用户名/密码登录的解决方案。我曾将其发布为答案,但一个过于热情的mod将其删除了。https://groups.google.com/g/keycloak-user/c/N9cuqXIBrSA/m/sycLxTZbCAAJ - GGGforce
1
@GGGforce 谢谢你的信息,看起来很有前途,我已经尝试过了,似乎可以工作。 - Raymond Tau

2
我不确定为什么Keycloak在领域中没有提供此配置选项,但它确实没有。 话虽如此,如果您尚未启用自注册,则无论如何都不能登录用户?我认为您需要创建自己的登录主题,并从主题中删除用户名和密码部分。这可能并不像听起来那么难。

谢谢,是的,这应该可行并且很容易实现。你不觉得需要添加一个新的SPI扩展和配置一个新的身份验证流程吗?也许是因为一些安全原因? - hb70muc
我不知道...如果你修改了主题,我无法想象有人如何登录,就算你不这样做,你怎么考虑用户登录呢?Keycloak不会验证用户名和密码与外部IdP的匹配性,而是验证其自己的数据库。如果你不允许用户自行注册,他们怎么会有本地账户呢? - Mark Phippard
1
用户可以通过IdP登录后,在/account端点上为自己创建本地帐户。此后,即使他们的IdP帐户被禁用,他们仍然可以使用用户名/密码。这对我来说似乎是一个重大的安全问题。 - GGGforce

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接