프로그래매틱 방식으로 Google 이외의 리소스에 액세스

이 문서에서는 외부 ID를 사용하여 IAP(Identity-Aware Proxy)로 보호되는 리소스에 프로그래매틱 방식으로 액세스하는 방법을 보여줍니다.

이 작업을 수행할 수 있는 몇 가지 상황이 있습니다.

  • 프런트엔드 애플리케이션은 Identity Platform을 직접 활용합니다. 백엔드 API 서버는 App Engine을 사용하여 빌드되며 외부 ID를 사용하여 IAP로 보호됩니다.

  • 애플리케이션은 브라우저 리디렉션을 사용하여 사용자를 인증할 수 없는 Android, iOS 또는 명령줄과 같은 비 전통적인 브라우저 환경에서 사용하도록 설계되었습니다.

리소스 액세스

프로그래매틱 방식으로 리소스에 액세스하려면 다음 단계를 수행하세요.

  1. 사용자의 ID 토큰을 검색합니다.

    Node.js

    사용자가 로그인했는지 확인합니다. 아래 코드는 이메일과 비밀번호로 사용자를 로그인하는 간단한 예시를 보여줍니다.

    // If signing in using project-level email/password IdP.
    // auth.tenantId = null; // This is null by default.
    // For signing in to a specific tenant using email/password.
    auth.tenantId = 'myTenantId';
    auth.signInWithEmailAndPassword(email, password)
      .then((user) => {
        // User signed in. ID token can now be retrieved.
      })
      .catch((error) => {
        // Handler error.
      });
    

    그런 다음 user 객체에서 ID 토큰을 검색할 수 있습니다.

    user.getIdToken()
      .then((idToken) => {
        // idToken is now available and can be sent to API server.
      })
      .catch((error) => {
        // Handler error.
      });
    

    REST

    signInWithPassword를 호출하면 응답에 ID 토큰이 반환됩니다.

    curl 'https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=API-KEY' \
    -H 'Content-Type: application/json' \
    --data-binary '{
      "email":"EMAIL",
      "password":"PASSWORD",
      "returnSecureToken":true,
      "tenantId":"TENANT-ID" # Only used in multi-tenancy
      }'
    
  2. IAP로 보호되는 엔드포인트를 호출할 때 승인 헤더에 ID 토큰을 포함합니다.

    curl -H "Authorization: Bearer GCIP-ID-TOKEN" "https://example.appspot.com/api"