12.4. OpenID Connect アイデンティティープロバイダーとしての 3scale と Red Hat Single Sign-On のインテグレーション
API プロバイダーは、3scale を OpenID Connect アイデンティティープロバイダーとして Red Hat Single Sign-On (RH-SSO) と統合できます。以下の手順は、API 要求の認証に OpenID Connect を必要とする 3scale API 製品向けです。
この手順の一部で、Zync が RH-SSO と通信してトークンを交換するため、3scale Zync と RH-SSO との間で SSL 接続を確立します。Zync と RH-SSO との間に SSL 接続を設定しないと、トークンはリッスンしているすべてに対してオープンになります。
3scale 2.2 以降のバージョンでは、SSL_CERT_FILE 環境変数により、RH-SSO のカスタム CA 証明書がサポートされます。この変数は、証明書バンドルのローカルパスをポイントします。OpenID Connect アイデンティティープロバイダーとして 3scale と RH-SSO を統合する際に、以下の要素を次の順序で構成します。
- RH-SSO が信頼できる認証局 (CA) が発行する証明書を 使用しない 場合は、3scale Zync がカスタム CA 証明書を使用するように設定する必要があります。信頼できる CA が発行する証明書を RH-SSO が使用する場合には、この作業は必要ありません。
- 3scale クライアントを使用するように RH-SSO を設定します。
- RH-SSO と連携するように 3scale を設定します。
前提条件
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 の設定
信頼できる認証局(CA)が発行する証明書を RH-SSO が使用する場合には、この作業は必要ありません。ただし、信頼できる CA が発行する証明書を RH-SSO が 使用しない 場合は、3scale Zync を設定して 3scale クライアントを使用するように RH-SSO を、RH-SSO と連携するように 3scale を設定する必要があります。
手順
-
.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
新規ファイルを configmap オブジェクトとして
zync-que
Pod に割り当てます。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
新たな CA 証明書のバンドルをポイントするように、Zync の
SSL_CERT_FILE
環境変数を設定します。oc set env dc/zync-que SSL_CERT_FILE=/etc/pki/tls/zync/zync.pem