프로그래매틱 방식으로 IAP용 OAuth 클라이언트 만들기

이 페이지에서는 IAP와 함께 사용할 OAuth 클라이언트를 프로그래매틱 방식으로 만들어 내부 애플리케이션에 프로그래매틱 방식으로 IAP를 설정하는 방법에 대해 설명합니다.

제한 사항

프로그래매틱 방식으로 만든 OAuth 클라이언트에는 몇 가지 알려진 제한사항이 있습니다.

  • API로 만든 OAuth 클라이언트는 API를 사용해야만 수정할 수 있습니다. API를 사용하여 만든 경우 Cloud Console을 통해 OAuth 클라이언트를 수정할 수 없습니다.
  • API 사용 시 프로젝트당 500개의 OAuth 클라이언트만 허용됩니다.
  • API로 만든 OAuth 동의 화면 브랜드에는 특정 제한이 있습니다. 자세한 내용은 아래 섹션을 참조하세요.

브랜드 및 브랜딩 상태 이해

사용자의 브랜드 정보가 포함된 OAuth 동의 화면브랜드라고 합니다. 브랜드는 내부 사용자 또는 공개 사용자로 제한될 수 있습니다. 내부 브랜드를 사용하면 프로젝트와 동일한 Google Workspace 조직에 속한 사용자가 OAuth 흐름에 액세스할 수 있습니다. 공개 브랜드는 인터넷의 모든 사용자가 OAuth 흐름을 사용할 수 있게 합니다.

브랜드를 API를 통해 수동 또는 프로그래매틱 방식으로 만들 수 있습니다. API로 만든 브랜드는 다른 설정으로 자동 구성됩니다.

  • 내부로 설정되어 있으며 원하는 경우 공개로 수동 설정해야 합니다.
  • '검토되지 않은' 상태로 설정되고 브랜드 검토가 트리거되어야 합니다.

내부 브랜드를 공개로 수동 설정하려면 다음 안내를 따르세요.

  1. OAuth 동의 화면을 엽니다.
  2. 드롭다운 메뉴에서 원하는 프로젝트를 선택합니다.
  3. OAuth 동의 화면 페이지에서 사용자 유형이 자동으로 내부로 설정됩니다. 공개로 설정하려면 앱 수정을 클릭합니다. 더 많은 구성 옵션을 사용할 수 있게 됩니다.
  4. 애플리케이션 유형에서 공개를 클릭합니다.

검토되지 않은 API가 만든 브랜드에 대한 브랜드 검토를 시작하려면 다음 안내를 따르세요.

  1. OAuth 동의 화면을 엽니다.
  2. 드롭다운 메뉴에서 원하는 프로젝트를 선택합니다.
  3. OAuth 동의 화면 페이지에서 필요한 정보를 입력한 다음 제출하여 확인받기를 클릭합니다.

확인 절차에 최대 몇 주 정도 걸릴 수 있으며 처리되면 이메일 업데이트가 전송됩니다. 확인에 대해 자세히 알아보기. 확인 절차가 진행되는 동안 Google Workspace 조직 내에서 계속 애플리케이션을 사용할 수 있습니다. 애플리케이션이 확인되기 전에 어떻게 작동하는지 자세히 알아보기.

시작하기 전에

클라이언트를 만들려면 먼저 호출자에게 다음 권한이 부여되었는지 확인합니다.

  • clientauthconfig.brands.list
  • clientauthconfig.brands.create
  • clientauthconfig.brands.get
  • clientauthconfig.clients.create
  • clientauthconfig.clients.listWithSecrets
  • clientauthconfig.clients.getWithSecret
  • clientauthconfig.clients.delete
  • clientauthconfig.clients.update

이러한 권한은 편집자(roles/editor) 및 소유자(roles/owner) 기본 역할에 포함되지만 대신 이러한 권한이 포함된 커스텀 역할을 만들어 호출자에게 부여하는 것이 좋습니다.

IAP용 OAuth 설정

다음 단계는 동의 화면을 구성하고 IAP에 대한 oauth 클라이언트를 만드는 방법을 설명합니다.

  1. list 명령어를 사용하여 기존 브랜드가 있는지 확인합니다. 프로젝트당 하나의 브랜드만 있을 수 있습니다.

    gcloud alpha iap oauth-brands list
    

    다음은 브랜드가 있는 경우 gcloud 응답의 예시입니다.

    name: projects/[PROJECT_NUMBER]/brands/[BRAND_ID]
    applicationTitle: [APPLICATION_TITLE]
    supportEmail: [SUPPORT_EMAIL]
    orgInternalOnly: true
    
  2. 브랜드가 없으면 create 명령어를 사용합니다.

    gcloud alpha iap oauth-brands create --application_title=APPLICATION_TITLE --support_email=SUPPORT_EMAIL
    

    이 API를 호출할 때 위의 필드가 필요합니다.

    • supportEmail: OAuth 동의 화면에 표시되는 지원 이메일. 이 이메일 주소는 사용자의 주소이거나 Google 그룹스 별칭입니다. 서비스 계정에도 이메일 주소가 있지만 실제 유효한 이메일 주소가 아니며 브랜드를 만들 때 사용할 수 없습니다. 그러나 서비스 계정은 Google 그룹의 소유자일 수 있습니다. 새 Google 그룹을 만들거나 기존 그룹을 구성하고 원하는 서비스 계정을 그룹의 소유자로 설정합니다.

    • applicationTitle: OAuth 동의 화면에 표시되는 애플리케이션 이름.

    응답에는 다음 필드가 포함됩니다.

    name: projects/[PROJECT_NUMBER]/brands/[BRAND_ID]
    applicationTitle: [APPLICATION_TITLE]
    supportEmail: [SUPPORT_EMAIL]
    orgInternalOnly: true
    

IAP OAuth 클라이언트 만들기

  1. create 명령어를 사용하여 클라이언트를 만듭니다. 이전 단계의 name 브랜드를 사용합니다.

    gcloud alpha iap oauth-clients create projects/PROJECT_ID/brands/BRAND-ID --display_name=NAME
    

    응답에는 다음 필드가 포함됩니다.

    name: projects/[PROJECT_NUMBER]/brands/[BRAND_NAME]/identityAwareProxyClients/[CLIENT_ID]
    secret: [CLIENT_SECRET]
    displayName: [NAME]
    
  2. 클라이언트 ID(위의 예시에서 client_id) 및 secret을 사용하여 IAP를 사용 설정합니다. 방금 만든 사용자 인증 정보를 사용하여 IAP를 사용 설정하는 방법에 대한 자세한 내용은 다음 항목을 참조하세요.

인증

앱에 대해 IAP가 구성되면 모든 요청을 인증해야 합니다. 다음 단계는 프로그래매틱 방식으로 IAP 보호 애플리케이션에 액세스하는 방법을 설명합니다.

최종 사용자 인증

위 단계를 수행한 후 OAuth 2.0을 사용하여 인증하는 방법에 대한 자세한 내용은 이 주제를 참조하세요. 자동화를 위해 새로고침 토큰을 요청하세요. OAuth 흐름 동안 수동 동의가 필요하지만 갱신 토큰을 사용하여 프로그래매틱 방식으로 새로운 액세스 토큰을 얻을 수 있습니다.

서비스 계정 및 gcloud

서비스 계정 및 gcloud를 사용하여 인증하려면 다음 단계를 따르세요.

  1. 서비스 계정을 만들고 필요한 권한을 부여합니다.
  2. 서비스 계정 키를 만들고 원하는 경로로 다운로드합니다.
  3. 서비스 계정 키의 경로를 지정하여 다음 gcloud 명령어를 실행합니다.

    gcloud auth activate-service-account [ACCOUNT-NAME]
        --key-file=/path/to/service-key.json --project=[PROJECT_ID]
    
  4. gcloud auth print-access-token을 사용하여 API를 요청합니다.

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)"
        https://iap.googleapis.com/v1/projects/[PROJECT_ID_OR_NUMBER]/brands