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。
步骤
-
以
.pem
格式获取 CA 证书链,并将每个证书保存为单独的文件,例如:customCA1.pem
、CustomCA2.pem
等等。 测试每个证书文件,以确认它是有效的 CA。例如:
openssl x509 -in customCA1.pem -noout -text | grep "CA:"
这个输出为
CA:TRUE
或CA:FALSE
。您希望每个证书文件为CA:TRUE
。如果输出为CA:FALSE
,则证书不是有效的 CA。使用以下
cURL
命令验证每个证书文件。例如:curl -v https://<secure-sso-host>/auth/realms/master --cacert customCA1.pem
将
<secure-sso-host>
替换为 RH-SSO 主机的完全限定域名。预期的响应是 RH-SSO 域的 JSON 配置。如果验证失败,您的证书可能不正确。
在
zync-que
pod 上收集/etc/pki/tls/cert.pem
文件的现有内容:oc exec <zync-que-pod-id> -- cat /etc/pki/tls/cert.pem > zync.pem
将每个自定义 CA 证书文件的内容附加到
zync.pem
,例如:cat customCA1.pem customCA2.pem ... >> zync.pem
将新文件附加到
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 中。验证证书是否已附加,内容是否正确:
oc exec <zync-que-pod-id> -- cat /etc/pki/tls/zync/zync.pem
在 Zync 上配置
SSL_CERT_FILE
环境变量以指向新的 CA 证书捆绑包:oc set env dc/zync-que SSL_CERT_FILE=/etc/pki/tls/zync/zync.pem