12.5. 将 3scale 与第三方 OpenID Connect 身份提供程序集成
作为 API 供应商,您可以配置 3scale 和第三方 OpenID Connect 身份提供程序之间的 HTTP 集成。也就是说,您可以配置红帽单点登录以外的 OpenID Connect 身份提供程序。3scale 使用此集成来验证来自 API 用户的请求,并使用最新的 3scale 应用详情更新第三方身份提供程序。
将 3scale 与第三方 OpenID Connect 身份提供程序集成的大多数工作都涉及以下任务:
- 满足与 3scale Zync 相关的先决条件。
- 配置 OpenID Connect 身份提供程序,以授权来自 3scale 应用的请求。
先决条件
- 3scale Zync 已安装。
您选择的第三方 OpenID Connect 身份提供程序:
- 遵循 3scale 提供的 OpenAPI 规格。
-
允许用
<client_id>
和<client_secret>
作为请求中的参数来注册客户端。3scale 始终是 3scale 和第三方 OpenID Connect 身份提供程序之间的客户端身份管理源。 - 被配置为授权来自 3scale 应用程序的请求。
如果您的配置无法达到以前的先决条件,您必须实施基于 Zync abstract 适配器的自定义适配器。Zync 使用这个适配器与 OpenID Connect 身份提供程序交互。要创建此适配器,您可以修改 rest_adapter.rb,它是 3scale Zync REST API 示例 的一部分。
您可以根据最适合您的要求的方法在
zync-que
pod 中包含rest_adapter.rb
模块。例如,您可以通过卷挂载configMap
,也可以为 Zync 构建新镜像。
步骤
- 在 3scale Admin Portal 中,在顶层选择器中,点 Products,再选择您要为其启用 OpenID Connect 身份验证的 3scale API 产品。
- 导航到 [Your_product_name] > Integration > Settings。
在 Authentication 下,选择 OpenID Connect Use OpenID Connect for any OAuth 2.0 flow。
这将显示 OPENID CONNECT(OIDC)BASICS 部分。
- 在 OpenID Connect Issuer Type 字段中,确保设置是 REST API。
在 OpenID Connect Issuer 字段中输入 OpenID Connect 身份提供程序的 URL。这个 URL 的格式如下:
https://<client_id>:<client_secret>@<oidc_host>:<oidc_port>/<endpoint>
例如,在 Zync
rest_adapter.rb
示例中,URL 端点被硬编码为{endpoint}/clients
。您的端点可以是{endpoint}/register
或其他对象。在 OIDC AUTHORIZATION FLOW 下,选择以下一个或多个:
- 授权代码流
- 隐式流
- 服务帐户流
- 直接访问授予流
这将配置 API 使用者应用如何从 OpenID Connect 身份提供程序接收 JSON Web 令牌 (JWT)。建议将 授权代码流 作为最安全且适合大多数情况。务必选择 OpenID Connect 身份提供程序支持的 OAuth 2.0 流。
- 向下滚动并点 Update Product 以保存配置。
- 在左侧导航面板中点 Integration > Configuration。
- 向下滚动,点 Promote v. x to APIcast Staging。
后续步骤
测试与第三方身份提供程序的集成。当一切工作时,返回到 Integration > Configuration 页面,再向下滚动以提升 APIcast staging 版本成为生产版本。