12.4. Red Hat Single Sign-On과 3scale을 OpenID Connect ID 공급자로 통합

API 공급자는 OpenID Connect ID 공급자로서 RH-SSO(Red Hat Single Sign-On)와 3scale을 통합할 수 있습니다. 여기에 설명된 절차는 API 요청을 인증하기 위해 OpenID Connect가 필요한 3scale API 제품용입니다.

Zync가 RH-SSO와 토큰을 교환하기 위해 RH-SSO와 통신하기 때문에 이 절차의 일부는 3scale Zync와 RH-SSO 간에 SSL 연결을 설정하는 것입니다. Zync와 RH-SSO 간의 SSL 연결을 구성하지 않으면 누구나 토큰이 열립니다.

3scale 2.2 이상 버전은 SSL_CERT_FILE 환경 변수를 사용하여 RH-SSO에 대한 사용자 정의 CA 인증서를 지원합니다. 이 변수는 인증서 번들의 로컬 경로를 가리킵니다. 3scale과 RH-SSO를 OpenID Connect ID 공급자로 통합하는 작업은 다음 순서로 구성하도록 구성됩니다.

  • RH-SSO가 신뢰할 수 있는 CA(인증 기관)에서 발급한 인증서를 사용하지 않는 경우 사용자 정의 CA 인증서를 사용하도록 3scale Zync를 구성해야 합니다. RH-SSO에서 신뢰할 수 있는 CA에서 발급한 인증서를 사용하는 경우에는 이 작업이 필요하지 않습니다.
  • 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 클러스터 관리자 권한.
  • RH-SSO와 OpenID Connect 통합을 구성하려는 3scale API 제품입니다.

자세한 내용은 다음 섹션을 참조하십시오.

12.4.1. 사용자 정의 인증 기관 인증서를 사용하도록 3scale Zync 구성

RH-SSO는 신뢰할 수 있는 CA(인증 기관)에서 발급한 인증서를 사용하는 경우 필요하지 않습니다. 그러나 RH-SSO가 신뢰할 수 있는 CA에서 발행한 인증서를 사용하지 않는 경우 RH-SSO를 3scale 클라이언트를 보유하도록 구성하고 RH-SSO로 작동하도록 3scale을 구성하기 전에 3scale Zync를 구성해야 합니다.

절차

  1. .pem 형식으로 CA 인증서 체인을 가져와서 각 인증서를 별도의 파일로 저장합니다(예: customCA1.pem,customCA2.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

    & lt;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