使用 Keycloak 配置控制台单点登录 (SSO)
单点登录(SSO)允许用户使用一组凭据访问多个应用程序,从而简化了身份验证过程。在 API7 企业版中,SSO 支持多种协议,并提供了通过从现有身份提供商(IdP)导入用户来管理用户的功能。
本指南将引导你完成通过 OpenID Connect (OIDC) 协议使用 Keycloak 作为身份提供商,为 API7 企业版控制台配置单点登录(SSO)的过程,并为导入的用户设置角色和权限边界映射。
探索我们的交互式演示,了解如何将 Keycloak SSO 与 API7 企业版无缝集成。
设置 SSO 集成
本节将指导你配置使用 Keycloak 作为身份提供商的 API7 企业版控制台的单点登录(SSO)。
配置 Keycloak
本节描述了 Keycloak 26.3.3 中的示例配置。如果你使用的是不同版本,请相应地调整配置。
- 创建一个 realm,例如
quickstart-realm。 - 创建一个 client,例如
apisix-quickstart-client。在客户端中:- 启用 client authentication(客户端身份验证),这会将访问类型设置为 confidential(机密)。
- 启用 standard flow(标准流程,即授权码授权)。
- 配置 redirect URL(重定向 URL),例如
*。 - 创建客户端后,导航到 Credentials 选项卡并获取 client secret(客户端密钥)。记录此值以供稍后使用。
- 创建一个 user。在用户中:
- 创建用户密码。
- 根据需要配置用户电子邮件、名字和姓氏。
- 在 realm settings 中,找到指向发现文档(discovery document)的链接。在发现文档中,记录这些值以供稍后使用:
issuerURL,例如,http://192.168.10.101:8080/realms/quickstart-realm。end_session_endpointURL,例如,http://192.168.10.101:8080/realms/quickstart-realm/protocol/openid-connect/logout。
创建控制台登录选项
API7 企业版支持使用多种协议的单点登录(SSO)。通过与现有用户系统集成,它允许用户访问 API7 企业版而无需创建新账户。
- 从顶部导航栏中选择 Organization,然后选择 Settings。
- 点击 Add Login Option。
- 填写配置:
- Name:唯一的登录名称。该名称应易于用户识别。例如,如果你将名称配置为
Employee Account,你将在控制台登录页面上看到Login with Employee Account选项。 - Provider:选择
OIDC。 - Issuer:OpenID Connect 提供商的 issuer URL,例如
http://192.168.10.101:8080/realms/quickstart-realm。 - Client ID:OIDC 提供商分配给你的应用程序的唯一标识符,例如
apisix-quickstart-client。 - Client Secret:OIDC 提供商分配的用于身份验证的密钥。
- Request Scope:从 OIDC 提供商请求的作用域值,它定义了令牌(token)中包含的访问级别和声明(claims)。对于所有 OIDC 请求,
openid作用域是必需的。可以根据需要包含其他作用域,用空格分隔。例如,openid profile email。 - Root URL:用户访问 API7 控制台的根地址,例如
https://dashboard.your-company.com。此 URL 必须与用户在浏览器中输入的完全匹配,包括协议(HTTP 或 HTTPS)以及端口号(如果不同于标准端口 80 或 443)。- 回调 URL 将自动生成为
<Root_URL>/api/oidc/<LOGIN_OPTION_ID>/callback。
- 回调 URL 将自动生成为
- SSL verify:是否验证 OIDC 提供商的 SSL/TLS 证书。
- Logout URL:结束用户会话并将其重定向到登录页面的 URL。这应该是
end_session_endpointURL,并带有将post_logout_redirect_uri查询参数设置为 API7 控制台 URL 的配置,例如http://192.168.10.101:8080/realms/quickstart-realm/protocol/openid-connect/logout?post_logout_redirect_uri=https://dashboard.your-company.com。 - Attributes Mapping:API7 用户字段到 OIDC 声明的映射。例如:
- username:
preferred_username - email:
email - name:
name
- username:
- 点击 Add。
新的登录选项现在应出现在 API7 控制台登录页面上,允许你使用在 IdP 中创建的用户进行身份验证。用户登录后,以管理员用户身份登录,在顶部导航栏中导航到 Organization,然后选择 Users 以查看该用户。
请注意,该用户尚未分配任何角色,因此缺乏在控制台中管理资源的权限。
在控制台中删除用户会删除在 API7 控制台中分配的所有角色和权限边界,但该用户仍然可以作为新用户登录。要完全撤销对 API7 控制台的访问权限,必须从 IdP 中删除该用户。
管理用户角色和权限
启用自动映射后,导入的用户可以根据其身份提供商的属性(如职称、职位或部门)自动分配角色和权限边界。这些角色和权限边界在用户每次登录时同步,以确保一致的访问权限。一个登录选项的映射可以包含多个规则,这些规则共同决定用户的访问权限。