12장. OpenID Connect ID 공급자와 3scale 통합
API 요청을 인증하기 위해 3scale은 OpenID Connect 사양 을 준수하는 ID 공급자와 통합할 수 있습니다. 3scale과의 전체 호환성을 위해 ID 공급자는 RH-SSO(Red Hat Single Sign-On) 또는 기본 Keycloak 클라이언트 등록을 구현하는 타사 ID 공급자일 수 있습니다. 3scale API 게이트웨이(APIcast)와의 호환성을 위해 OpenID Connect를 구현하는 모든 ID 공급자를 사용할 수 있습니다.
3scale은 RFC 7591 동적 클라이언트 등록 메커니즘을 사용하지 않습니다. 3scale과 OpenID Connect ID 공급자 간의 완전한 호환성을 위해 기본 Keycloak 클라이언트 등록에 종속성이 있습니다.
OpenID Connect의 기초는 OAuth 2.0 인증 프레임워크(RFC 6749)입니다. OpenID Connect는 API 요청에서 JSON 웹 토큰(RFC 7519) 을 사용하여 해당 요청을 인증합니다. OpenID Connect ID 공급자와 3scale을 통합할 때 프로세스에는 다음 두 가지 주요 부분이 있습니다.
- APIcast는 요청에서 JWT를 구문 분석하고 확인합니다. 성공하면 APIcast는 API 소비자 클라이언트 애플리케이션의 ID를 인증합니다.
- 3scale Zync 구성 요소는 3scale 애플리케이션 세부 정보를 OpenID Connect ID 공급자와 동기화합니다.
RH-SSO가 OpenID Connect ID 공급자인 경우 3scale은 이러한 통합 지점을 모두 지원합니다. 지원되는 구성 페이지에서 지원되는 RH-SSO 버전을 참조하십시오. 그러나 RH-SSO는 필수 사항이 아닙니다. OpenID Connect 사양 및 기본 Keycloak 클라이언트 등록을 지원하는 모든 ID 공급자를 사용할 수 있습니다. APIcast 통합은 RH-SSO 및 ForgeRock 에서 테스트됩니다.
다음 섹션에서는 OpenID Connect ID 공급자를 사용하도록 3scale을 구성하는 데 필요한 정보와 지침을 제공합니다.
- 3scale 및 OpenID Connect ID 공급자를 통합하기 위한 개요
- APIcast에서 JSON 웹 토큰을 처리하는 방법
- 3scale Zync가 OpenID Connect ID 공급자와 애플리케이션 세부 정보를 동기화하는 방법
- Red Hat Single Sign-On과 3scale을 OpenID Connect ID 공급자로 통합
- 타사 OpenID Connect ID 공급자와 3scale 통합
- OpenID Connect ID 공급자를 사용하여 3scale 테스트
- 및 OpenID Connect ID 공급자와 3scale 통합의 예
12.1. 3scale 및 OpenID Connect ID 공급자를 통합하기 위한 개요
각 주요 3scale 구성 요소는 다음과 같이 인증에 참여합니다.
- APIcast는 API 소비자 애플리케이션에서 제공하는 인증 토큰의 진위 여부를 확인합니다. 기본 3scale 배포에서 APIcast는 API 제품의 OpenID Connect 구성의 자동 검색을 구현하므로 이를 수행할 수 있습니다.
- API 공급자는 관리 포털을 사용하여 인증 흐름을 설정합니다.
- 3scale 관리형 API가 표준 API 키 또는 애플리케이션 식별자 및 키 쌍으로 요청을 인증하지 않는 경우 API 공급자는 3scale을 OpenID Connect ID 공급자와 통합해야 합니다. 아래 그림에서 OpenID Connect ID 공급자는 RH-SSO(Red Hat Single Sign-On)입니다.
- 인증이 구성되고 라이브 개발자 포털을 통해 API 소비자는 개발자 포털을 사용하여 특정 3scale API 제품에 대한 액세스를 제공하는 애플리케이션 계획을 구독합니다.
- OpenID Connect가 3scale과 통합되면 서브스크립션에서 API 소비자 애플리케이션에 대해 구성된 흐름을 트리거하여 OpenID Connect ID 공급자에서 JSON Web Tokens(JWT)를 가져옵니다. API 공급자는 OpenID Connect를 사용하도록 API 제품을 구성할 때 이 흐름을 지정합니다.
그림 12.1. OpenID Connect ID 공급자를 사용하여 주요 3scale 구성 요소를 보여줍니다.
애플리케이션 계획을 구독하면 API 소비자는 통합된 OpenID Connect ID 공급자에서 인증 자격 증명을 수신합니다. 이러한 인증 정보를 통해 API 소비자 애플리케이션이 API 소비자가 액세스할 수 있는 3scale API 제품에서 제공하는 API인 업스트림 API로 전송하는 요청을 인증할 수 있습니다.
자격 증명에는 클라이언트 ID와 클라이언트 시크릿이 포함됩니다. API 소비자에서 생성한 애플리케이션은 이러한 자격 증명을 사용하여 OpenID Connect ID 공급자에서 JSON 웹 토큰(JWT)을 가져옵니다. OpenID Connect를 사용하여 3scale 통합을 구성하면 API 소비자 애플리케이션이 JWT를 얻는 방법에 대한 흐름을 선택합니다. RH-SSO에서 기본 권한 부여 코드 흐름을 사용하는 API 소비자 애플리케이션에서는 애플리케이션이 다음을 수행해야 합니다.
- 첫 번째 요청이 업스트림 API 백엔드에 요청되기 전에 OpenID Connect ID 공급자를 사용하여 OAuth 인증 흐름을 시작합니다. 권한 부여 코드 흐름은 최종 사용자를 RH-SSO로 리디렉션합니다. 권한 부여 코드를 받기 위한 최종 사용자 로그입니다.
- JWT의 인증 코드를 교환합니다.
- 인증 시 RH-SSO에서 JWT를 수신합니다.
- JWT가 포함된 API 요청을 업스트림 API 백엔드에 보냅니다.
- 만료될 때까지 동일한 JWT로 후속 API 요청을 보냅니다.
- JWT를 새로 고치거나 OpenID Connect ID 공급자에 새 요청을 보내 새 JWT를 가져옵니다. 다음 중 OpenID Connect ID 공급자에 따라 필요한 작업은 무엇입니까.
APIcast는 API 소비자로부터 요청을 수신하고 요청에서 JWT를 확인합니다. APIcast가 JWT를 확인하면 APIcast는 JWT를 포함한 요청을 업스트림 API 백엔드에 보냅니다.
그림 12.2. OpenID Connect ID 공급자가 RH-SSO이지만 다른 OpenID Connect ID 공급자와의 구성이 가능하다는 것을 보여줍니다.