配置 Identity Providers
Keycloak 可以将身份验证代理到外部 Identity Providers(IdP),允许用户使用来自 OIDC、SAML 或社交身份提供程序的现有账户登录。
有关身份联合的基础概念,请参阅 Identity Federation。
目录
添加 OpenID Connect Identity Provider添加 SAML Identity Provider添加 Social Identity Provider支持的 Social Providers示例:将 GitHub 添加为 Identity ProviderIdP Mappers添加 IdP Mapper首次登录流程默认首次登录流程行为自定义首次登录流程默认 Identity ProviderBroker Logout添加 OpenID Connect Identity Provider
使用此操作步骤将任何符合 OIDC 的身份提供程序集成进来(例如 Microsoft Entra ID、Okta 或另一个 Keycloak 实例)。
- 在 Admin Console 中,选择目标 Realm。
- 转到左侧导航中的 Identity providers。
- 点击 Add provider,然后选择 OpenID Connect v1.0。
- 配置以下内容:
- 点击 Save。
添加 SAML Identity Provider
- 转到 Identity providers > Add provider > SAML v2.0。
- 配置以下内容:
- 点击 Save。
创建 SAML IdP 后,下载 Keycloak SP metadata,以便在外部 IdP 中注册:
添加 Social Identity Provider
Keycloak 为常见的社交身份提供程序提供了内置模板。每个提供程序的配置类似;差异仅在于特定于提供程序的 client registration。
支持的 Social Providers
示例:将 GitHub 添加为 Identity Provider
-
在 GitHub 上注册一个新的 OAuth App:
- Homepage URL:
https://<keycloak-host>/realms/<realm> - Authorization callback URL:
https://<keycloak-host>/realms/<realm>/broker/github/endpoint - 记录 Client ID 和 Client Secret。
- Homepage URL:
-
在 Keycloak Admin Console 中:
- 转到 Identity providers > Add provider > GitHub。
- 输入 GitHub OAuth App 中的 Client ID 和 Client Secret。
- 点击 Save。
-
GitHub 登录按钮会显示在 Realm 登录页面上。
IdP Mappers
IdP Mappers 控制来自外部 IdP 的用户属性和角色如何映射到 Keycloak 用户。
添加 IdP Mapper
- 在 IdP 详细视图中,点击 Mappers 选项卡。
- 点击 Add mapper。
- 选择一种 mapper 类型:
- 配置源(IdP claim 或 attribute)和目标(Keycloak attribute 或 role)。
- 点击 Save。
首次登录流程
当用户首次通过外部 IdP 进行身份验证时,Keycloak 会执行 First Login Flow 来决定如何处理这个新身份。
默认首次登录流程行为
- Review Profile — 系统会提示用户审查并补全其个人资料。
- Create User — 如果没有匹配的现有用户,则会创建一个新用户。
- Link Existing Account — 如果已存在同一 email 的用户,则会提示用户链接账户。
自定义首次登录流程
- 转到 Authentication > Flows 选项卡。
- 复制 First broker login flow。
- 按需修改步骤:
- 删除 Review Profile 以跳过个人资料审查步骤。
- 添加条件,以便无需用户确认即可自动链接账户。
- 在 IdP 配置中,将 First login flow 设置为你的自定义 flow。
默认 Identity Provider
你可以配置一个 default IdP,使 Keycloak 登录页面自动重定向到外部 IdP,而不显示本地登录表单。
- 转到 Authentication > Flows > Browser flow。
- 添加一个 Identity Provider Redirector 步骤。
- 在步骤配置中配置 Default Identity Provider。
- 将该步骤的 requirement 设置为
Alternative。
另外,应用程序可以在 authorization request 中传递 kc_idp_hint query parameter 来建议使用某个 IdP:
Broker Logout
默认情况下,当用户从 Keycloak 注销时,与外部 IdP 的 session 不会终止。要启用级联注销:
- 在 IdP 配置中,启用 Backchannel logout 或 Front-channel logout(取决于 IdP 支持情况)。
- 确保外部 IdP 已配置为接受来自 Keycloak 的注销请求。