이 페이지에서는 IAP(Identity-Aware Proxy)를 사용하여 사용자의 ID를 얻는 방법에 대해 설명합니다. 사용자의 ID를 확인하면 애플리케이션에서 요청이 IAP를 통해 왔는지 확인할 수 있습니다. 앱을 올바르게 보호하려면 항상 아래 메커니즘 중 하나를 사용하여 IAP 인증 사용자 ID를 가져와야 합니다.
서명된 헤더로 사용자 ID 확인
Compute Engine, GKE, Cloud Run, App Engine 표준 환경 또는 App Engine 가변형 환경 앱에 대한 요청이 IAP에서 승인되었는지 확인하려면 앱에서 x-goog-iap-jwt-assertion
HTTP 요청 헤더를 확인하여 모든 요청을 검증해야 합니다.
서명된 헤더로 앱 보안에 대해 자세히 알아보세요.
IAP는 또한 사용자 ID를 다음 HTTP 헤더의 백엔드 서비스로 전달합니다. 이러한 헤더에는 네임스페이스 프리픽스 accounts.google.com
가 있어야 합니다. 이러한 헤더는 호환성을 위해 제공되지만, 보안 방식으로 사용해서는 안 됩니다. 이러한 헤더를 사용할 때는 위에 나열된 인증된 JWT 헤더의 ID 정보와 비교해야 합니다.
헤더 이름 | 설명 | 값 예 |
---|---|---|
X-Goog-Authenticated-User-Email
|
사용자의 이메일 주소 |
accounts.google.com:example@gmail.com
|
X-Goog-Authenticated-User-Id
|
사용자의 고유 영구 식별자 |
accounts.google.com:userIDvalue
|
App Engine 표준 환경 Users API를 사용하여 사용자 ID 확인
다른 방법으로는, App Engine 표준 환경 앱이 있는 경우 Users API가 앱 코드에서 사용자의 ID를 가져오는데 사용될 수 있습니다.
애플리케이션이 이미 이 API를 사용하는 경우 아무것도 변경할 필요가 없습니다. IAP는 사용자의 ID를 제공하지만 IAP가 사용되면 각 사용자의 Users API 사용자 ID 값이 변경됩니다.
요청에 대한 IAP 인증 사용자 ID를 얻으려면 Users API를 호출하여 현재 사용자를 반환합니다. 함수가 자바에서 req.getUserPrincipal() != null
과 같은 사용자를 반환하면 사용자는 IAP에서 인증된 것입니다.
동의 화면
IAP가 사용 설정된 경우 사용자가 앱에 처음 액세스하면 앱에 자신의 ID를 공유할지 확인하기 위한 동의 화면으로 리디렉션됩니다. IAP를 사용 설정하기 전 사용자가 이 앱에 동의를 부여한 경우에도 이 작업은 수행되며, 개발자가 IAP를 사용 중지하고 다시 사용 설정한 경우도 다시 수행됩니다.
Users API를 사용하는 경우 일반적으로 동일한 Google Workspace 도메인 내에 있는 앱 및 사용자의 동의 화면이 표시되지 않습니다. IAP를 사용 설정하면, 동의 화면이 자동으로 숨겨지지 않습니다. IAP가 사용 설정된 상태로 동의 화면을 숨기려면 아래 단계를 따르세요
- Google 관리 콘솔로 이동합니다.
관리 콘솔로 이동 - 위젯 목록에서 보안을 선택합니다.
- 보안이 목록에 없으면 페이지 아래의 회색 막대에서 위젯 추가를 선택한 후 위젯 목록에서 보안을 선택합니다.
- 위젯이 표시되지 않으면 도메인의 관리자로 로그인되었는지 확인합니다.
- 옵션 목록에서 더보기를 선택한 후 고급 설정을 선택합니다.
- 인증 섹션에서 API 클라이언트 액세스 관리를 선택합니다.
- 클라이언트 이름 필드에 IAP OAuth 2.0 클라이언트 ID를 입력합니다. 사용자 인증 정보 페이지에서 IAP 클라이언트 ID를 찾을 수 있습니다.
IAP 사용자 인증 정보 페이지로 이동 - 하나 이상의 API 범위 필드에
email, openid
를 입력합니다. - 승인을 클릭합니다.
이 프로세스를 단순화하려면 API 호출을 사용하여 모든 앱에 단일 IAP OAuth 2.0 클라이언트 ID를 사용할 수 있습니다. Google Cloud 콘솔을 사용하여 IAP에 사용할 클라이언트 ID를 지정할 수 없습니다.
다음 단계
- Identity and Access Management에 대해 자세히 알아봅니다.