在Keycloak中添加Google供应商,可以让用户使用他们的Google账户登录到你的应用程序,实现单点登录(SSO)。以下是详细步骤:
1. 在 Google Cloud Platform (GCP) 中创建 OAuth 2.0 客户端 ID:
- 访问 Google Cloud Console: 打开 Google Cloud Console 并登录你的 Google 账户。
- 创建或选择项目: 如果你还没有项目,需要创建一个新的 GCP 项目。如果已有项目,则选择它。
- 配置 OAuth 同意屏幕:
- 在左侧导航栏中,选择 “API 和服务” -> “OAuth 同意屏幕”。
- 选择 “外部” 或 “内部” 用户类型。如果你的应用只供组织内部使用,选择 “内部”。如果你的应用需要外部用户访问,则选择 “外部”。
- 填写应用信息,包括应用名称、用户支持电子邮件、开发者联系信息等。
- 添加授权域(可选,但推荐):在“授权域”部分,添加你的 Keycloak 服务器的域名。
- 点击 “保存并继续”。
- 在“范围”部分,至少添加
openid
、profile
和email
范围。这些范围允许你的应用访问用户的基本信息。 - 点击 “保存并继续”。
- 在“测试用户”部分,添加用于测试的 Google 账户。
- 点击 “保存并继续”。
- 检查摘要并点击 “返回控制台”。
- 创建凭据:
- 在左侧导航栏中,选择 “API 和服务” -> “凭据”。
- 点击 “创建凭据” -> “OAuth 客户端 ID”。
- 选择 “Web 应用” 作为应用类型。
- 填写名称(例如 “Keycloak Google Login”)。
- 在 “授权的重定向 URI” 中,添加 Keycloak 的重定向 URI。这个 URI 的格式通常是:
https://<your-keycloak-server>/realms/<your-realm-name>/broker/google/endpoint
。 - 点击 “创建”。
- 获取客户端 ID 和客户端密钥: 创建完成后,会弹出一个窗口显示你的客户端 ID 和客户端密钥。请务必保存这两个值,稍后在 Keycloak 配置中需要使用。
2. 在 Keycloak 中配置 Google 身份提供商:
- 登录 Keycloak 管理控制台: 使用管理员账户登录。
- 选择 Realm: 在左上角的下拉菜单中选择你要配置的 Realm。
- 导航到 “Identity Providers”: 在左侧导航栏中,点击 “Identity Providers”。
- 选择 “Google”: 在 “Add provider…” 下拉菜单中选择 “google”。
- 配置 Google 身份提供商:
- Alias: 为这个身份提供商设置一个别名(例如 “google”)。
- Client ID: 粘贴你在 GCP 中创建的 OAuth 2.0 客户端 ID。
- Client Secret: 粘贴你在 GCP 中创建的 OAuth 2.0 客户端密钥。
- Default Scopes: 默认范围通常是
openid profile email
。你可以根据需要添加其他范围。 - 其他配置: 你可以根据需要配置其他选项,例如 “Store Token”、”Trust Email”、”Validate Signature” 等。
- 保存配置: 点击 “Save”。
3. 测试 Google 登录:
- 访问 Keycloak 登录页面: 访问你的 Keycloak 登录页面。
- 点击 “Google” 按钮: 你应该会看到一个 “Google” 登录按钮。点击它。
- 重定向到 Google 登录页面: 你将被重定向到 Google 的登录页面。
- 使用 Google 账户登录: 输入你的 Google 账户凭据进行登录。
- 重定向回 Keycloak: 成功登录后,你将被重定向回 Keycloak。如果一切配置正确,你应该能够成功登录到 Keycloak。
重要提示:
- 重定向 URI: 确保在 GCP 和 Keycloak 中的重定向 URI 完全一致,否则登录将无法工作。
- HTTPS: 确保你的 Keycloak 服务器使用 HTTPS,否则 Google 登录将无法工作。
- 网络连接: 确保你的 Keycloak 服务器可以访问 Google 的服务器。
- 用户映射: 如果你需要将 Google 用户的信息映射到 Keycloak 用户属性,可以在 Keycloak 客户端的 “Mappers” 选项卡中进行配置。