在 Keycloak 中,如果你在同一个租户(Realm)下配置了多个身份认证提供商(Identity Provider,简称 IdP),你可以通过「指定的 URL 路径参数」来跳转到特定的身份认证提供商进行登录,而无需用户在登录页面上手动选择。
✅ 方法:通过 kc_idp_hint
参数跳转到指定的 IdP
Keycloak 支持使用 kc_idp_hint
查询参数来自动跳转到某个指定的身份认证提供商。
示例 URL:
https://<keycloak-host>/realms/<realm-name>/protocol/openid-connect/auth?client_id=<client-id>&redirect_uri=<redirect-uri>&response_type=code&kc_idp_hint=<idp-alias>
参数说明:
<keycloak-host>
:你的 Keycloak 地址。<realm-name>
:租户名。<client-id>
:客户端 ID。<redirect-uri>
:登录完成后的跳转地址。<idp-alias>
:你配置的身份认证提供商的别名(Alias),在 Keycloak 管理后台的身份提供商设置中可以看到。
🔁 示例:两个身份认证提供商
假设你在 Realm demo
中配置了两个身份认证提供商:
- 企业微信(别名:
wecom
) - GitHub(别名:
github
)
你可以通过以下方式跳转:
-
跳转到企业微信认证:
https://your-keycloak.com/realms/demo/protocol/openid-connect/auth?client_id=myapp&redirect_uri=https%3A%2F%2Fmyapp.com%2Fcallback&response_type=code&kc_idp_hint=wecom
-
跳转到 GitHub 认证:
https://your-keycloak.com/realms/demo/protocol/openid-connect/auth?client_id=myapp&redirect_uri=https%3A%2F%2Fmyapp.com%2Fcallback&response_type=code&kc_idp_hint=github
✅ 可选:禁用默认登录页面(直接跳转)
如果你希望用户访问登录页面时自动跳转到某个身份认证提供商,可以:
- 给登录页面的 URL 添加
kc_idp_hint
。 - 或者在 Keycloak 的
Authentication
流中,使用Identity Provider Redirector
作为首个执行的 Step,并配置默认的 IdP。