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

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

此流程的一部分是在 3scale Zync 和 RH-SSO 之间建立 SSL 连接,因为 Zync 与 RH-SSO 通信来交换令牌。如果您没有在 Zync 和 RH-SSO 之间配置 SSL 连接,则会为侦听的任何人打开令牌。

3scale 2.2 和更高版本支持带有 SSL_CERT_FILE 环境变量的 RH-SSO 的自定义 CA 证书。此变量指向证书捆绑包的本地路径。将 3scale 与 RH-SSO 集成为 OpenID Connect 身份提供程序,包括按照以下顺序配置以下元素:

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

先决条件

  • RH-SSO 服务器必须通过 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 与 RH-SSO 集成的 3scale API 产品。

详情请查看以下部分:

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

当 RH-SSO 使用由受信任的证书颁发机构(CA)发布的证书时,则不需要此项。但是,如果 RH-SSO 不使用 受信任 CA 发布的证书,您必须配置 3scale Zync,然后才能配置 3scale 客户端,然后才能配置 3scale 以用于 RH-SSO。

步骤

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

    openssl x509 -in customCA1.pem -noout -text | grep "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 > 替换为 RH-SSO 主机的完全限定域名。

    预期的响应是 RH-SSO 域的 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