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

Posted

技术标签:

【中文标题】Keycloak:如何仅通过身份提供者登录【英文标题】:Keycloak: How to login only through identity provider 【发布时间】:2020-12-02 10:03:27 【问题描述】:

我有一个 Keycloak 代理和 2 个身份提供程序正在运行。目前,我在代理登录屏幕上看到了用户名和密码字段以及指向已配置身份提供者的 2 个链接。单击 IP 链接后可以通过身份提供者登录。

由于我只想提供身份提供者来登录我的客户(无法直接通过代理登录),我该如何禁用/删除用户名/密码字段?

【问题讨论】:

【参考方案1】:

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

如果您只需要一个默认 IdP,您可以为您的领域配置一个默认身份提供程序。这将绕过 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 登录页面。

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

【讨论】:

感谢您的信息。客户建议的身份提供者可能对我们有所帮助。我已经试过了。【参考方案2】:

我不太确定为什么 Keycloak 不只是在 Realm 中为此提供配置选项.. 但它没有。也就是说..如果您没有启用自我注册,那么用户无论如何都无法登录?

我认为您需要创建自己的登录主题,然后从主题中删除用户名和密码部分。这可能并不像听起来那么难。

【讨论】:

谢谢,是的,这应该可行并且很容易实现。你不觉得有必要添加一个新的 spi 扩展并配置一个新的身份验证流程吗?可能是因为某些安全原因? 我不知道...如果您修改了主题,我想不出有人如何登录,就像我说的那样,即使您不这样做,您认为用户如何登录? Keycloak 不会针对外部 IdP 验证用户名和密码,而是针对它自己的数据库进行验证。如果您不让用户自行注册,他们将如何拥有本地帐户?

以上是关于Keycloak:如何仅通过身份提供者登录的主要内容,如果未能解决你的问题,请参考以下文章

带有 OpenIdConnect 外部身份提供者的 Keycloak

如何检查来自另一个 keycloak 实例 B 的身份验证 keycloak 实例 A 用户?

Keycloak 自定义用户联合和身份提供者工作顺序

通过 Keycloak 实现 Grafana 单点登录

在 Keycloak SPI/Provider 中获取当前用户访问令牌(初始登录时)

KeyCloak 在身份验证代码流错误后重定向回身份提供者