12.7. OpenID Connect ID 공급자와 3scale 통합의 예

이 예에서는 Red Hat Single Sign-On(RH-SSO)과 OpenID Connect ID 공급자로 3scale을 통합할 때 흐름을 보여줍니다. 이 예제에는 다음과 같은 특성이 있습니다.

  • 관리 포털에서 API 공급자는 3scale API 제품을 정의하고 RH-SSO를 OpenID Connect ID 공급자로 사용하도록 구성했습니다.
  • 이 제품의 OpenID Connect 구성은 다음과 같습니다.

    • 공개 기본 URL: https://api.example.com
    • 개인 기본 URL: https://internal-api.example.com
    • OpenID Connectsuer: https://zync:/auth/realms/myrealm
    • 표준 흐름인 권한 부여 코드 흐름이 선택됩니다. Authorization Code Flow, which is the standard flow, is selected.
  • 3scale 개발자 포털에는 다음과 같은 특성이 있는 애플리케이션이 있습니다. 이 애플리케이션은 API 소비자가 개발자 포털의 특정 애플리케이션 계획에서 제공하는 3scale API 제품에 대한 액세스를 구독한 결과입니다.

    • 클라이언트 ID:myclientid
    • 클라이언트 시크릿:myclientsecret
    • 리디렉션 URL:https://myapp.example.com
  • RH-SSO에서는 myrealm 영역에 다음과 같은 특성을 가진 클라이언트가 있습니다.

    • 클라이언트 ID:myclientid
    • 클라이언트 시크릿:myclientsecret
    • 리디렉션 URL:https://myapp.example.com
  • myrealm 영역에는 이 사용자가 있습니다.

    • 사용자 이름: myuser
    • 암호: mypassword
  • myrealm 의 3scale Zync 클라이언트에는 올바른 서비스 계정 역할이 있습니다.

흐름은 다음과 같습니다.

  1. 최종 사용자(API 소비자)는 다음 끝점에서 이 예제에서 인증 서버 RH-SSO로 권한 부여 요청을 보냅니다.

    https://idp.example.com/auth/realms/myrealm/protocol/openid-connect/auth

    요청에서 애플리케이션은 다음 매개변수를 제공합니다.

    • 클라이언트 ID: myclientid
    • 리디렉션 URL: https://myapp.example.com
  2. 애플리케이션은 end-user를 RH-SSO 로그인 창에서 리디렉션합니다.
  3. 다음 인증 정보를 사용하여 RH-SSO에 최종 사용자 로그인:

    • 사용자 이름: myuser
    • 암호: mypassword
  4. 구성에 따라 및 이 특정 애플리케이션에서 최종 사용자가 처음 인증하는 경우 동의 창이 표시될 수 있습니다.
  5. RH-SSO는 최종 사용자에게 권한 부여 코드를 발행합니다.
  6. API 소비자 애플리케이션은 다음 끝점을 사용하여 JWT에 대한 권한 부여 코드를 교환하는 요청을 보냅니다.

    https://idp.example.com/auth/realms/myrealm/protocol/openid-connect/token

    요청에는 권한 부여 코드와 이러한 매개변수가 포함됩니다.

    • 클라이언트 ID: myclientid
    • 클라이언트 시크릿: myclientsecret
    • 리디렉션 URL: https://myapp.example.com.
  7. RH-SSO는 eyJhbGciOiJSUzI1NiIsInR5cCIgiAiAiSldUIiwia2lk BenxBArNhqF-A 와 같은 access_token 필드가 있는 JSON 웹 토큰(JWT)을 반환합니다.
  8. API 소비자 애플리케이션은 다음과 같은 헤더를 사용하여 https://api.example.com 에 API 요청을 보냅니다.

    Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lk…xBArNhqF-A.
  9. 이 애플리케이션에는 https://internal-api.example.com 로부터 성공적인 응답을 수신해야 합니다.