이 가이드에서는 Google Cloud와의 OAuth 기반 애플리케이션 통합을 관리하는 방법을 보여줍니다.
대략적으로 OAuth 기반 애플리케이션을 통합하려면 다음 단계를 따르세요.
- OAuth 클라이언트를 만듭니다.
- OAuth 클라이언트 사용자 인증 정보를 만듭니다.
- OAuth 클라이언트 인증 정보에서 클라이언트 보안 비밀번호를 가져옵니다. 클라이언트 보안 비밀번호 저장 및 액세스와 관련된 위험과 이를 완화하는 데 도움이 되는 전략에 대해 알아보려면 OAuth 클라이언트 및 사용자 인증 정보 보안 위험 및 완화를 참고하세요.
이 단계를 완료하면 OAuth 기반 애플리케이션이 Google Cloud 제품 및 데이터에 액세스할 수 있습니다.
시작하기 전에
Google Cloud 조직을 설정해야 합니다.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
OAuth 애플리케이션을 등록할 조직에서 직원 ID 풀 및 제공업체를 설정해야 합니다. Microsoft Entra ID, Okta, 기타 OIDC 및 SAML 2.0 제공업체의 직원 ID 제휴를 설정하는 방법을 알아봅니다.
필요한 역할
조직의 OAuth 애플리케이션을 등록하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 IAM OAuth 클라이언트 관리자(roles/iam.oauthClientAdmin
) IAM 역할을 부여해 달라고 요청하세요.
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
OAuth 클라이언트 관리
이 섹션에서는 OAuth 클라이언트를 관리하는 방법을 보여줍니다.
OAuth 클라이언트 만들기
OAuth 클라이언트를 만들려면 다음 단계를 따르세요.
gcloud
gcloud iam oauth-clients create APP_OAUTH_CLIENT_ID \
--project=PROJECT_ID \
--location=global \
--client-type="CONFIDENTIAL_CLIENT" \
--display-name="My OAuth application" \
--description="An application registration for MyApp" \
--allowed-scopes="https://www.googleapis.com/auth/cloud-platform" \
--allowed-redirect-uris="REDIRECT_URI" \
--allowed-grant-types="authorization_code_grant"
다음을 바꿉니다.
APP_OAUTH_CLIENT_ID
: 이 OAuth 클라이언트를 나타내는 클라이언트 ID입니다.PROJECT_ID
: 직원 ID 풀 및 제공업체를 만든 프로젝트의 ID입니다. 프로젝트는 인력 풀과 제공업체가 생성된 조직에서 만들어야 합니다.REDIRECT_URI
: OAuth 애플리케이션의 리디렉션 URI입니다(예:https://myapp.com/signin-callback
).
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
-d "{ \
'allowedGrantTypes': ['AUTHORIZATION_CODE_GRANT'], \
'allowedRedirectUris': ['REDIRECT_URI'], \
'allowedScopes': ['https://www.googleapis.com/auth/cloud-platform'], \
'clientType': 'CONFIDENTIAL_CLIENT', \
'description': 'My OAuth client description', \
'disabled': false, \
'displayName': 'My OAuth client'}" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients\?oauthClientId\=APP_OAUTH_CLIENT_ID
다음을 바꿉니다.
PROJECT_ID
: 직원 ID 풀 및 제공업체를 만든 프로젝트의 ID입니다. 프로젝트는 인력 풀과 제공업체가 생성된 조직에서 만들어야 합니다.REDIRECT_URI
: OAuth 애플리케이션의 리디렉션 URI입니다(예:https://myapp.com/signin-callback
).APP_OAUTH_CLIENT_ID
: 이 OAuth 클라이언트를 나타내는 클라이언트 ID입니다.
애플리케이션을 등록한 후 OAuth 클라이언트 사용자 인증 정보를 만들고 OAuth 애플리케이션이 Google Cloud에 액세스하는 데 사용하는 보안 비밀을 가져옵니다.
OAuth 클라이언트 표시
등록된 OAuth 클라이언트를 나열하려면 다음 명령어를 실행합니다.
gcloud
gcloud iam oauth-clients list \
--project=PROJECT_ID \
--location=global
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients
PROJECT_ID
를 OAuth 애플리케이션이 등록된 프로젝트의 ID로 바꿉니다.
OAuth 클라이언트 설명
OAuth 클라이언트를 설명하려면 다음 명령어를 실행합니다.
gcloud
gcloud iam oauth-clients describe APP_OAUTH_CLIENT_ID \
--project PROJECT_ID \
--location global
다음을 바꿉니다.
APP_OAUTH_CLIENT_ID
: 설명하려는 OAuth 클라이언트의 IDPROJECT_ID
: OAuth 애플리케이션을 등록한 프로젝트의 ID
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID
다음을 바꿉니다.
PROJECT_ID
: OAuth 애플리케이션을 등록한 프로젝트의 IDAPP_OAUTH_CLIENT_ID
: 설명하려는 OAuth 클라이언트의 ID
OAuth 클라이언트 업데이트
OAuth 클라이언트를 업데이트하려면 다음 명령어를 실행합니다.
gcloud
gcloud iam oauth-clients update APP_OAUTH_CLIENT_ID \
--project=PROJECT_ID \
--location=global \
--allowed-redirect-uris="REDIRECT_URI"
다음을 바꿉니다.
APP_OAUTH_CLIENT_ID
: 업데이트하려는 OAuth 클라이언트의 OAuth 클라이언트 IDPROJECT_ID
: OAuth 애플리케이션을 등록한 프로젝트의 IDREDIRECT_URI
: OAuth 애플리케이션의 리디렉션 URI
다른 필드를 업데이트하려면 gcloud iam oauth-clients update
에 나열된 플래그를 사용하세요.
REST
curl -d'{"allowedRedirectUris":"REDIRECT_URI"}' \
-H "Content-Type: application/json" -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID?update_mask=allowed_redirect_uris
다음을 바꿉니다.
PROJECT_ID
: OAuth 애플리케이션을 등록한 프로젝트의 IDAPP_OAUTH_CLIENT_ID
: 업데이트하려는 OAuth 클라이언트의 OAuth 클라이언트 IDREDIRECT_URI
: OAuth 클라이언트의 리디렉션 URI
다른 필드를 업데이트하려면 update_mask
를 gcloud iam oauth-clients update
에 나열된 필드 이름으로 설정합니다.
OAuth 클라이언트 삭제
OAuth 클라이언트를 삭제하려면 다음 명령어를 실행합니다.
gcloud
gcloud iam oauth-clients delete APP_OAUTH_CLIENT_ID \
--project PROJECT_ID \
--location global
다음을 바꿉니다.
APP_OAUTH_CLIENT_ID
: 삭제할 OAuth 클라이언트 IDPROJECT_ID
: OAuth 애플리케이션을 등록한 프로젝트의 ID
REST
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID
다음을 바꿉니다.
PROJECT_ID
: OAuth 애플리케이션을 등록한 프로젝트의 IDAPP_OAUTH_CLIENT_ID
: 삭제할 OAuth 클라이언트 ID
OAuth 클라이언트 사용자 인증 정보 관리
이 섹션에서는 OAuth 클라이언트의 OAuth 클라이언트 사용자 인증 정보를 관리하는 방법을 보여줍니다.
OAuth 클라이언트 사용자 인증 정보 만들기
OAuth 클라이언트 사용자 인증 정보를 만들려면 다음 명령어를 실행합니다.
gcloud
gcloud iam oauth-clients credentials create APP_OAUTH_CLIENT_CREDENTIAL_ID \
--oauth-client=APP_OAUTH_CLIENT_ID \
--display-name='My OAuth client credential' \
--location='global'
다음을 바꿉니다.
APP_OAUTH_CLIENT_CREDENTIAL_ID
: 이 클라이언트 사용자 인증 정보를 나타내는 IDAPP_OAUTH_CLIENT_ID
: 등록된 OAuth 클라이언트 애플리케이션을 설명하여 가져올 수 있는 OAuth 클라이언트 ID
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
-d "{'disabled': false, 'displayName': 'My OAuth client credential'}" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials\?oauthClientCredentialId=APP_OAUTH_CLIENT_CREDENTIAL_ID
다음을 바꿉니다.
PROJECT_ID
: OAuth 애플리케이션을 등록한 프로젝트의 IDAPP_OAUTH_CLIENT_ID
: 등록된 OAuth 클라이언트 애플리케이션을 설명하여 가져올 수 있는 OAuth 클라이언트 IDAPP_OAUTH_CLIENT_CREDENTIAL_ID
: 이 클라이언트 사용자 인증 정보를 나타내는 ID
OAuth 클라이언트 사용자 인증 정보 나열
OAuth 클라이언트 사용자 인증 정보를 나열하려면 다음 명령어를 실행합니다.
gcloud
gcloud iam oauth-clients credentials list \
--oauth-client=APP_OAUTH_CLIENT_ID \
--project=PROJECT_ID \
--location=global
다음을 바꿉니다.
APP_OAUTH_CLIENT_ID
: 사용자 인증 정보를 나열할 OAuth 클라이언트 IDPROJECT_ID
: OAuth 애플리케이션을 등록한 프로젝트의 ID
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/$PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials
다음을 바꿉니다.
PROJECT_ID
: OAuth 애플리케이션을 등록한 프로젝트의 IDAPP_OAUTH_CLIENT_ID
: 사용자 인증 정보를 나열할 OAuth 클라이언트 ID
OAuth 클라이언트 사용자 인증 정보 설명
OAuth 클라이언트 사용자 인증 정보를 설명하려면 다음 명령어를 실행합니다. 출력을 검사하여 클라이언트 보안 비밀번호를 가져올 수 있습니다.
gcloud
gcloud iam oauth-clients credentials describe APP_OAUTH_CLIENT_CREDENTIAL_ID \
--oauth-client=APP_OAUTH_CLIENT_ID \
--location='global'
다음을 바꿉니다.
APP_OAUTH_CLIENT_CREDENTIAL_ID
: OAuth 클라이언트의 리디렉션 URIAPP_OAUTH_CLIENT_ID
: 클라이언트 애플리케이션 등록을 설명하여 가져올 수 있는 OAuth 클라이언트 ID
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID
다음을 바꿉니다.
PROJECT_ID
: OAuth 애플리케이션을 등록한 프로젝트의 IDAPP_OAUTH_CLIENT_CREDENTIAL_ID
: OAuth 클라이언트의 리디렉션 URIAPP_OAUTH_CLIENT_ID
: 클라이언트 애플리케이션 등록을 설명하여 가져올 수 있는 OAuth 클라이언트 ID
출력에서 clientSecret
는 클라이언트 보안 비밀번호입니다. OAuth 애플리케이션이 Google Cloud에 액세스하는 데 사용하는 보안 비밀입니다.
OAuth 클라이언트 사용자 인증 정보 업데이트
OAuth 클라이언트 사용자 인증 정보를 업데이트하려면 다음 명령어를 실행합니다.
gcloud
gcloud iam oauth-clients credentials update APP_OAUTH_CLIENT_CREDENTIAL_ID \
--client-id=APP_OAUTH_CLIENT_ID \
--display-name="My new credential name" \
--location=global
REST
curl -d'{"displayName":"My new credential name"}' -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://staging-iam.sandbox.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID?update_mask=display_name
다음을 바꿉니다.
PROJECT_ID
: OAuth 애플리케이션을 등록한 프로젝트의 IDAPP_OAUTH_CLIENT_CREDENTIAL_ID
: OAuth 클라이언트의 리디렉션 URIAPP_OAUTH_CLIENT_ID
: 클라이언트 애플리케이션 등록을 설명하여 가져올 수 있는 OAuth 클라이언트 ID
OAuth 클라이언트 사용자 인증 정보 사용 중지
OAuth 클라이언트 사용자 인증 정보를 삭제하려면 먼저 사용 중지해야 합니다. OAuth 클라이언트 사용자 인증 정보를 사용 중지하려면 다음 명령어를 실행합니다.
gcloud
gcloud iam oauth-clients credentials update APP_OAUTH_CLIENT_CREDENTIAL_ID \
--oauth-client=APP_OAUTH_CLIENT_ID \
--disabled \
--project=PROJECT_ID \
--location=global
다음을 바꿉니다.
PROJECT_ID
: OAuth 애플리케이션을 등록한 프로젝트의 IDAPP_OAUTH_CLIENT_ID
: OAuth 클라이언트 IDAPP_OAUTH_CLIENT_CREDENTIAL_ID
: 사용 중지할 클라이언트 사용자 인증 정보 ID
REST
curl -d'{"disabled":"true"}' \
-H "Content-Type: application/json" -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID?update_mask=disabled
다음을 바꿉니다.
PROJECT_ID
: OAuth 애플리케이션을 등록한 프로젝트의 IDAPP_OAUTH_CLIENT_ID
: OAuth 클라이언트 IDAPP_OAUTH_CLIENT_CREDENTIAL_ID
: 사용 중지할 클라이언트 사용자 인증 정보 ID
OAuth 클라이언트 사용자 인증 정보 삭제
OAuth 클라이언트 사용자 인증 정보를 삭제하려면 다음 명령어를 실행합니다.
gcloud
gcloud iam oauth-clients credentials delete APP_OAUTH_CLIENT_CREDENTIAL_ID \
--project=PROJECT_ID \
--oauth-client=APP_OAUTH_CLIENT_ID \
--location=global
다음을 바꿉니다.
APP_OAUTH_CLIENT_CREDENTIAL_ID
: OAuth 클라이언트 IDPROJECT_ID
: OAuth 애플리케이션을 등록한 프로젝트의 IDAPP_OAUTH_CLIENT_ID
: 클라이언트 사용자 인증 정보 ID
REST
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID
다음을 바꿉니다.
PROJECT_ID
: OAuth 애플리케이션을 등록한 프로젝트의 IDAPP_OAUTH_CLIENT_ID
: 클라이언트 사용자 인증 정보 IDAPP_OAUTH_CLIENT_CREDENTIAL_ID
: OAuth 클라이언트 ID