使用 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 步尚未完成)。
第 3 步:验证 SSO 登录
- 退出 API7 控制台。
- 在登录页,你应看到一个新选项:Login with {Name}。
- 点击该选项,通过 IdP 完成认证。
- 认证成功后,你会被重定向回控制台。
SSO 用户会出现在 Organization > Users 下。默认情况下,该用户未分配任何角色,无法管理资源,直到你配置角色映射或手动分配角色。
在控制台中删除用户会移除其角色和权限边界,但该用户仍可再次作为新用户登录。若要完全撤销访问权限,请从 IdP 中移除该用户。
配置角色映射
角色映射会根据身份提供商中的属性自动为 SSO 用户分配 API7 角色。这样可以免去手动分配角色,并保 持权限同步。
自动角色映射优先于手动角色分配。启用映射后,用户下次登录时会覆盖任何手动更改。
第 1 步:在 IdP 中暴露角色属性
配置 IdP,使其在用户信息或令牌声明中包含角色相关属性。具体方式因 IdP 而异:
- 用户属性:直接在用户资料中添加属性,例如
position: admin。 - 组成员关系:将用户加入某个组,例如
api7-admins,并将组成员关系作为声明提供。
详细说明请参阅提供商专用配置部分。
第 2 步:在 API7 中启用角色映射
- 在 API7 控制台中,进入 Organization > Settings。
- 选择你的 OIDC 登录选项。