이 페이지에서는 사용자 계정 또는 서비스 계정에서 IAP(Identity-Aware Proxy) 보안 리소스를 인증하는 방법에 대해 설명합니다.
- 사용자 계정은 개별 사용자에 속합니다. 애플리케이션에서 사용자를 대신하여 IAP 보안 리소스에 액세스해야 하는 경우 사용자 계정을 인증합니다. 사용자 계정 사용자 인증 정보를 읽어보세요.
- 서비스 계정은 개별 사용자 대신 애플리케이션에 속합니다. 애플리케이션이 IAP 보안 리소스에 액세스하도록 허용하려는 경우 서비스 계정을 인증합니다. 서비스 계정 이해 방법을 알아보세요.
시작하기 전에
시작하기 전에 다음이 필요합니다.
- 개발자 계정, 서비스 계정 또는 모바일 앱 사용자 인증 정보를 사용하여 프로그래매틱 방식으로 연결하려는 IAP 보안 애플리케이션입니다.
사용자 계정 인증
데스크톱 또는 모바일 앱에서 사용자가 앱에 액세스하여 프로그램이 IAP 보안 리소스와 상호작용하도록 할 수 있습니다.
모바일 앱에서 인증
- IAP 보안 리소스와 동일한 프로젝트에서 모바일 앱에 대한 OAuth 2.0 클라이언트 ID를 만듭니다.
- 사용자 인증 정보 페이지로 이동합니다.
사용자 인증 정보 페이지로 이동 - IAP 보안 리소스가 포함된 프로젝트를 선택합니다.
- 사용자 인증 정보 만들기를 클릭하고 OAuth 클라이언트 ID를 선택합니다.
- 사용자 인증 정보를 만들려는 애플리케이션 유형을 선택합니다.
- 필요에 따라 이름 및 제한사항을 추가한 후 만들기를 클릭합니다.
- 사용자 인증 정보 페이지로 이동합니다.
- 표시되는 OAuth 클라이언트 창에서 연결하려는 IAP 보안 리소스의 클라이언트 ID를 확인합니다.
- Cloud IAP 보안 클라이언트 ID에 대한 ID 토큰을 가져옵니다.
- Android: Google 로그인 API를 사용하여 OIDC(OpenID Connect) 토큰을 요청합니다.
requestIdToken
클라이언트 ID를 연결 중인 리소스의 클라이언트 ID로 설정합니다. - iOS: Google 로그인을 사용하여 ID 토큰을 가져옵니다. 연결하려는 리소스의 클라이언트 ID로
serverClientID
를 설정합니다.
- Android: Google 로그인 API를 사용하여 OIDC(OpenID Connect) 토큰을 요청합니다.
- IAP 보안 리소스에 인증된 요청을 하려면
Authorization: Bearer
헤더에 ID 토큰을 포함합니다.
데스크톱 앱에서 인증
이 섹션에서는 데스크톱 명령줄에서 사용자 계정을 인증하는 방법을 설명합니다.
클라이언트 ID 설정
개발자가 명령줄에서 애플리케이션에 액세스하도록 허용하려면 먼저 데스크톱 앱 유형의 OAuth 클라이언트 ID 사용자 인증 정보를 만들어야 합니다.
- 사용자 인증 정보 페이지로 이동합니다.
사용자 인증 정보 페이지로 이동 - IAP 보안 리소스가 포함된 프로젝트를 선택합니다.
- 사용자 인증 정보 만들기를 클릭하고 OAuth 클라이언트 ID를 선택합니다.
- 애플리케이션 유형에서 데스크톱 앱을 선택하고 이름을 추가한 다음 만들기를 클릭합니다.
- 표시된 OAuth 클라이언트 창에서 클라이언트 ID 및 클라이언트 보안 비밀을 기록해둡니다. 사용자 인증 정보를 관리하거나 개발자들과 공유하기 위해 스크립트에서 이를 사용해야 합니다.
- 사용자 인증 정보 창에서 새로운 데스크톱 앱 사용자 인증 정보가 애플리케이션에 액세스하기 위해 사용되는 기본 클라이언트 ID와 함께 표시됩니다.
애플리케이션에 로그인
IAP 보안 앱에 액세스하려는 각 개발자는 먼저 로그인해야 합니다. Cloud SDK를 사용하는 것과 같이 프로세스를 스크립트로 패키지화할 수 있습니다. 다음은 curl을 사용하여 로그인하고 애플리케이션에 액세스하기 위해 사용할 수 있는 토큰을 만드는 예시입니다.
- Google Cloud 리소스에 액세스할 수 있는 계정에 로그인합니다.
-
다음 URI로 이동합니다. 여기서
DESKTOP_CLIENT_ID
는 위에서 만든 데스크톱 앱 클라이언트 ID입니다.https://accounts.google.com/o/oauth2/v2/auth?client_id=DESKTOP_CLIENT_ID&response_type=code&scope=openid%20email&access_type=offline&redirect_uri=urn:ietf:wg:oauth:2.0:oob
-
표시된 창에서 위에서 만든 데스크톱 앱 클라이언트 ID 및 보안 비밀과 함께, 아래의
AUTH_CODE
를 대체할 승인 코드를 기록해둡니다.curl --verbose \ --data client_id=DESKTOP_CLIENT_ID \ --data client_secret=DESKTOP_CLIENT_SECRET \ --data code=AUTH_CODE \ --data redirect_uri=urn:ietf:wg:oauth:2.0:oob \ --data grant_type=authorization_code \ https://oauth2.googleapis.com/token
이 코드는 애플리케이션에 액세스하기 위해 로그인 토큰으로 저장할 수 있는
refresh_token
필드가 있는 JSON 객체를 반환합니다.
애플리케이션 액세스
애플리케이션에 액세스하기 위해 로그인 과정 중에 생성한 refresh_token
을 ID 토큰으로 교환합니다. ID 토큰은 약 1시간 동안 유효하며 이 기간 동안 특정 앱에 여러 요청을 할 수 있습니다. 다음은 curl을 사용하여 토큰을 사용하고 애플리케이션에 액세스하는 예시입니다.
-
아래 코드를 사용합니다. 여기서
REFRESH_TOKEN
은 로그인 과정의 토큰이고,IAP_CLIENT_ID
는 애플리케이션에 액세스하기 위해 사용되는 기본 클라이언트 ID이고,DESKTOP_CLIENT_ID
및DESKTOP_CLIENT_SECRET
은 위에서 클라이언트 ID를 설정할 때 만든 클라이언트 ID와 보안 비밀입니다.curl --verbose \ --data client_id=DESKTOP_CLIENT_ID \ --data client_secret=DESKTOP_CLIENT_SECRET \ --data refresh_token=REFRESH_TOKEN \ --data grant_type=refresh_token \ --data audience=IAP_CLIENT_ID \ https://oauth2.googleapis.com/token
이 코드는 앱에 액세스하는 데 사용할 수 있는
id_token
필드가 있는 JSON 객체를 반환합니다. -
앱에 액세스하려면 다음과 같이
id_token
을 사용합니다.curl --verbose --header 'Authorization: Bearer ID_TOKEN' URL
서비스 계정에서 인증
OIDC(OpenID Connect) 토큰을 사용하여 IAP 보안 리소스에 대한 서비스 계정을 인증합니다. 클라이언트 ID를 찾으려면 다음 단계를 따르세요.
- IAP 페이지로 이동합니다.
액세스하려는 리소스를 찾은 후 더보기 > OAuth 클라이언트 수정을 클릭합니다.
표시된 사용자 인증 정보 페이지에서 클라이언트 ID를 기록해둡니다.
또한 IAP 보안 프로젝트의 액세스 목록에 서비스 계정을 추가해야 합니다. 다음 코드 샘플은 OIDC 토큰을 받는 방법을 보여줍니다. 어떤 방법을 선택하든 Authorization: Bearer
헤더에 토큰을 포함하여 IAP 보안 리소스에 대해 인증 요청을 수행해야 합니다.
기본 서비스 계정의 OIDC 토큰 가져오기
Compute Engine, App Engine 또는 Cloud Run의 기본 서비스 계정용 OIDC 토큰을 가져오려는 경우 다음 코드 샘플을 사용하여 IAP 보안 리소스에 액세스할 수 있는 토큰을 생성할 수 있습니다.
C#
Go
자바
Node.js
PHP
Python
Ruby
로컬 서비스 계정 키 파일에서 OIDC 토큰 가져오기
서비스 계정 키 파일이 있는 경우 위의 코드 샘플을 조정하여 서비스 계정 키 파일을 제공할 수 있습니다.
그 외 모든 경우에 OIDC 토큰 가져오기
그 외 모든 경우에는 IAM Credentials API를 사용하여 다른 서비스 계정의 액세스 토큰을 기반으로 IAP 보안 리소스에 액세스하기 직전에 OIDC 토큰을 생성합니다.
service account token creator
역할이 있는 액세스 토큰의 계정을 대상 계정에 추가합니다. 이러면 대상 서비스 계정의 OIDC 토큰을 만드는 데 필요한 IAM 권한이 대상 계정에 부여됩니다.- 액세스 토큰이 있는 대상 서비스 계정에서 generateIdToken을 호출합니다.
audience
필드를 클라이언트 ID로 설정하는 경우 특히 주의하세요.
다음 단계
- 승인: Bearer 토큰에 대해 알아봅니다.
- Android 로그인 또는 iOS 로그인을 시도합니다.