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