12.4. 将 3scale API 管理与红帽单点登录集成为 OpenID Connect 身份提供程序


作为 API 供应商,您可以将 Red Hat 3scale API Management 与 Red Hat Single Sign-On 集成,作为 OpenID Connect 身份提供程序。这里记录的流程适用于需要 OpenID Connect 进行身份验证 API 请求的 3scale API 产品。

此流程的一部分是在 3scale Zync 和 Red Hat Single Sign-On 之间建立 SSL 连接,因为 Zync 与红帽单点登录通信以交换令牌。如果您没有在 Zync 和红帽单点登录之间配置 SSL 连接,则会为侦听的任何人打开令牌。

3scale 2.2 及更新的版本支持带有 SSL_CERT_FILE 环境变量的 Red Hat Single Sign-On 的自定义 CA 证书。此变量指向证书捆绑包的本地路径。将 3scale 与红帽单点登录集成为 OpenID Connect 身份提供程序包括按以下顺序配置以下元素:

  • 如果 Red Hat Single Sign-On 没有使用 由可信证书颁发机构(CA)发布的证书,您必须将 3scale Zync 配置为使用自定义 CA 证书。如果 Red Hat Single Sign-On 使用由可信 CA 发布的证书,则不需要此项。
  • 配置 Red Hat Single Sign-On 以具有 3scale 客户端。
  • 配置 3scale 以使用 Red Hat Single Sign-On。

先决条件

  • Red Hat Single Sign-On 服务器必须通过 HTTPS 提供,且必须通过 zync-que 访问。要测试这一点,您可以从 zync-que pod 中运行 curl https://rhsso-fqdn,例如:

    $ oc rsh -n $THREESCALE_PROJECT $(oc get pods -n $THREESCALE_PROJECT --field-selector=status.phase==Running -o name | grep zync-que) /bin/bash -c "curl -v https://<rhsso-fqdn>/auth/realms/master"
  • OpenShift 集群管理员权限。
  • 您要配置 OpenID Connect 与红帽单点登录集成的 3scale API 产品。

详情请查看以下部分:

12.4.1. 配置 3scale API 管理 Zync 以使用自定义证书颁发机构证书

当 Red Hat Single Sign-On 使用由可信证书颁发机构(CA)发布的证书时,则不需要此项。但是,如果 Red Hat Single Sign-On 没有使用 受信任 CA 发布的证书,您必须配置 Red Hat 3scale API Management Zync,然后才能将 Red Hat Single Sign-On 配置为具有 3scale 客户端,并在配置 3scale 以使用 Red Hat Single Sign-On 前。

流程

  1. .pem 格式获取 CA 证书链,并将每个证书保存为单独的文件,例如: customCA1.pemCustomCA2.pem 等等。
  2. 测试每个证书文件,以确认它是有效的 CA。例如:

    $ openssl x509 -in customCA1.pem -noout -text | grep "CA:"

    这个输出为 CA:TRUECA:FALSE。您希望每个证书文件为 CA:TRUE。如果输出为 CA:FALSE,则证书不是有效的 CA。

  3. 使用以下 cURL 命令验证每个证书文件。例如:

    $ curl -v https://<secure-sso-host>/auth/realms/master --cacert customCA1.pem

    <secure-sso-host > 替换为 Red Hat Single Sign-On 主机的完全限定域名。

    预期的响应是 Red Hat Single Sign-On 域的 JSON 配置。如果验证失败,您的证书可能不正确。

  4. zync-que pod 上收集 /etc/pki/tls/cert.pem 文件的现有内容:

    $ oc exec <zync-que-pod-id> -- cat /etc/pki/tls/cert.pem > zync.pem
  5. 将每个自定义 CA 证书文件的内容附加到 zync.pem,例如:

    $ cat customCA1.pem customCA2.pem ... >> zync.pem
  6. 将新文件附加到 zync-que pod 作为 configmap 对象:

    $ oc create configmap zync-ca-bundle --from-file=./zync.pem
    $ oc set volume dc/zync-que --add --name=zync-ca-bundle --mount-path /etc/pki/tls/zync/zync.pem --sub-path zync.pem --source='{"configMap":{"name":"zync-ca-bundle","items":[{"key":"zync.pem","path":"zync.pem"}]}}'

    这会完成将证书捆绑包添加到 zync-que pod 中。

  7. 验证证书是否已附加,内容是否正确:

    $ oc exec <zync-que-pod-id> -- cat /etc/pki/tls/zync/zync.pem
  8. 在 Zync 上配置 SSL_CERT_FILE 环境变量以指向新的 CA 证书捆绑包:

    $ oc set env dc/zync-que SSL_CERT_FILE=/etc/pki/tls/zync/zync.pem

12.4.2. 配置红帽单点登录使其具有 3scale API 管理客户端

在 OpenShift Red Hat Single Sign-On 仪表板中,将 Red Hat Single Sign-On 配置为具有 Red Hat 3scale API Management 客户端。这是特殊的管理客户端。每次 API 使用者订阅开发人员门户中的 API 时,3scale 使用您在此流程中创建的 Red Hat Single Sign-On 管理客户端来为 API 消费者应用程序创建客户端。

流程

  1. 在 Red Hat Single Sign-On 控制台中,为 3scale 客户端创建一个域,或选择包含 3scale 客户端的现有域。https://access.redhat.com/documentation/zh-cn/red_hat_single_sign-on/7.6/html/getting_started_guide/creating-first-realm_
  2. 在新的或选定域中,点左侧导航面板中的 Clients
  3. Create 创建新客户端。
  4. Client ID 字段中,指定可帮助您将此客户端识别为 3scale 客户端的名称,如 oidc-issuer-for-3scale
  5. Client Protocol 字段设置为 openid-connect
  6. 保存新客户端。
  7. 在新客户端的设置中,设置以下内容:

    • Access Typeconfidential
    • Standard Flow EnabledOFF
    • Direct Access Grants EnabledOFF
    • Service Accounts EnabledON。此设置可让此客户端发布服务帐户。

      1. Save
  8. 为客户端设置服务帐户角色:

    1. 导航到客户端的 Service Account Roles 选项卡。
    2. Client Roles 下拉列表中点 realm-management
    3. Available Roles 窗格中,选择 manage-clients 并通过点 Add selected >> 来分配角色。
  9. 请注意客户端凭证:

    1. 记录客户端 ID(<client_id>)。
    2. 导航到客户端的 Credentials 选项卡,并记录 Secret 字段(<client_secret>)。
  10. 要协助测试授权流,请在域中添加用户:

    1. 在窗口的左侧,展开 Users
    2. 单击 Add user
    3. 输入用户名,将 Email Verified 设置为 ON,然后点 Save
    4. Credentials 选项卡上,设置密码。在两个字段中输入密码,将 Temporary 开关设置为 OFF,以避免在下次登录时重置密码,然后点 Set password
    5. 出现弹出窗口时,点 Set password

12.4.3. 配置 3scale API 管理以使用 Red Hat Single Sign-On

通过在 3scale 管理门户中指定集成设置,配置 Red Hat 3scale API 管理以使用红帽单点登录。

流程

  1. 在 3scale Admin Portal 中,在顶层选择器中,点 Products,再选择您要为其启用 OpenID Connect 身份验证的 3scale API 产品。
  2. 导航到 [Your_product_name] > Integration > Settings
  3. Authentication 下,选择 OpenID Connect Use OpenID Connect for any OAuth 2.0 flow

    图 12.3. 显示 OPENID CONNECT(OIDC)BASICS 部分。

    OpenID Connect 基础知识
  4. OpenID Connect Issuer Type 字段中,确保该设置是 Red Hat Single Sign-On
  5. OpenID Connect Issuer 字段中,输入配置的 OpenID Connect 身份提供程序的 URL。这个 URL 的格式如下:

    https://<client_id>:<client_secret>@<rhsso_host>:<rhsso_port>/auth/realms/<realm_name>
  6. 将占位符替换为前面记录的 Red Hat Single Sign-On 客户端凭证、Red Hat Single Sign-On 服务器的主机和端口,以及包含 Red Hat Single Sign-On 客户端的域名称。

    注意

    要在两个不同的产品间使用相同的凭证,您必须为每个产品或同一签发者配置唯一的 OIDC 签发者,但使用不同的域。您还可以将应用程序分成 2 个单独的产品,以使用具有相同域的同一 OIDC 供应商进行身份验证。有关指导,请参阅第 5 和 6 步。

  7. OIDC AUTHORIZATION FLOW 下,选择以下一个或多个:

    • 授权代码流

      在 Red Hat Single Sign-On 中,这是标准流。

    • 隐式流
    • 服务帐户流

      也称为 客户端凭证流。

    • 直接访问授予流

      也称为 Resource Owner Password Credentials。

      图 12.4. 显示您选择的授权流:

      OpenID Connect 授权流

      这将配置 API 用户如何从 OpenID Connect 身份提供程序获取 JSON Web 令牌 (JWT)。当 3scale 将 Red Hat Single Sign-On 集成为 OpenID Connect 身份提供程序时,Zync 会创建启用了 授权代码 流的 Red Hat Single Sign-On 客户端。建议将此流程作为最适合大多数情况的最安全和最合适的流程。务必选择 OpenID Connect 身份提供程序支持的 OAuth 2.0 流

  8. 向下滚动并点 Update Product 以保存配置。
  9. 在左侧导航面板中点 Integration > Configuration
  10. 向下滚动点击 Promote v.X 到 APIcast Staging

后续步骤

测试 Red Hat Single Sign-On 作为身份提供程序的集成。当一切工作时,返回到 Integration > Configuration 页面,再向下滚动以提升 APIcast staging 版本成为生产版本。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.