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 を設定する必要があります。

手順

  1. .pem 形式で CA 証明書チェーンを取得し、各証明書を個別のファイル (例: customCA1.pemcustomCA2.pem など) として保存します。
  2. 各証明書ファイルをテストし、これが有効な CA であることを確認します。以下は例になります。

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

    これは CA:TRUE または CA: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. 新規ファイルを 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 への追加が完了しました。

  7. 証明書が追加され、コンテンツが正しいことを確認します。

    oc exec <zync-que-pod-id> -- cat /etc/pki/tls/zync/zync.pem
  8. 新たな CA 証明書のバンドルをポイントするように、Zync の SSL_CERT_FILE 環境変数を設定します。

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