使用 OIDC 配置 SSO
本指南介绍如何使用 OpenID Connect(OIDC)协议为 API7 控制台配置单点登录(SSO)。OIDC SSO 允许用户使用现有企业凭 证进行认证,无需单独维护控制台账户。
工作原理
- 用户在控制台登录页选择 OIDC 登录选项。
- 浏览器会重定向到 IdP 授权端点。
- 认证完成后,IdP 会携带授权码重定向回控制台。
- 控制台使用授权码换取令牌,获取用户信息,并创建或更新用户账户。
- 如果配置了角色和权限边界映射,这些映射会在每次登录时应用。
前置条件
开始前,请确保你已具备:
- 正在运行且可访问控制台的 API7 网关部署。
- 符合 OIDC 标准的身份提供商,例如 Keycloak、Microsoft Entra ID、Auth0 或 Okta。
- 来自 IdP 的以下信息:
- Issuer URL:OIDC 发现端点,不包含
/.well-known/openid-configuration。 - Client ID:在 IdP 中注册的应用标识符。
- Client Secret:应用密钥。
- Issuer URL:OIDC 发现端点,不包含
第 1 步:在 IdP 中注册 API7 控制台
在你的身份提供商中将 API7 控制台注册为 OIDC 客户端应用程序:
-
创建一个新的应用程序,授权类型选择 Authorization Code(也称为 "standard flow" 或 "confidential client")。
-
将重定向 URI 设置为:
https://<DASHBOARD_URL>/api/oidc/<LOGIN_OPTION_ID>/callback。备注LOGIN_OPTION_ID会在 API7 中创建登录选项后生成(第 2 步)。完成第 2 步后,你可能需要回到 IdP 更新重定向 URI。 -
记录 Client ID、Client Secret 和 Issuer URL,供下一步使用。
关于特定 IdP 的详细说明,请参阅下方提供商专用配置部分。
第 2 步:创建 OIDC 登录选项
- 在 API7 控制台中,进入 Organization > Settings。
- 点击 Add Login Option。
- 填写配置:
| 字段 | 描述 | 示例 |
|---|---|---|
| Name | 登录页 显示的名称,格式为 "Login with {Name}" | Corporate SSO |
| Provider | 选择 OIDC | — |
| Issuer | OIDC 提供商的 Issuer URL,不包含 /.well-known/openid-configuration | https://idp.example.com/realms/my-realm |
| Client ID | 来自 IdP 的应用标识符 | api7-dashboard |
| Client Secret | 来自 IdP 的应用密钥 | ******** |
| Request Scope | 空格分隔的作用域列表。openid 是必需项。 | openid profile email |
| Root URL | 用户访问控制台的 URL。必须匹配协议、主机和端口。 | https://dashboard.example.com |
| SSL Verify | 是否验证 IdP 的 TLS 证书 | true |
| Logout URL | IdP 的 end_session_endpoint URL,可选携带 post_logout_redirect_uri | https://idp.example.com/.../logout?post_logout_redirect_uri=https://dashboard.example.com |
| Attributes Mapping | 将 IdP 声明映射到 API7 用户字段:username、email、name | preferred_username、email、name |
- 点击 Add。
创建后,登录选项会显示其 Callback URL。复制该 URL,并将其作为重定向 URI 注册到你的 IdP 中(如果第 1 步尚未完成)。