Mengakses resource non-Google secara terprogram

Artikel ini menunjukkan cara mengakses resource yang dilindungi oleh Identity-Aware Proxy (IAP) secara terprogram menggunakan identitas eksternal.

Ada beberapa situasi yang mungkin mengharuskan Anda melakukan hal ini:

  • Aplikasi frontend Anda memanfaatkan Identity Platform secara langsung. Server API backend Anda dibangun menggunakan App Engine, dan dilindungi oleh IAP menggunakan identitas eksternal.

  • Aplikasi Anda dirancang untuk digunakan di lingkungan browser non-tradisional, seperti di Android, iOS, atau command line, yang tidak memungkinkan penggunaan pengalihan browser untuk mengautentikasi pengguna.

Mengakses resource

Untuk mengakses resource secara terprogram menggunakan JWT akun layanan, lihat Mengautentikasi dengan JWT akun layanan.

Untuk mengakses resource secara terprogram menggunakan token ID, ikuti langkah-langkah berikut:

  1. Ambil token ID pengguna.

    Node.js

    Pastikan pengguna login. Kode di bawah menunjukkan contoh sederhana proses login pengguna dengan email dan sandi:

    // 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.
      });
    

    Anda kemudian dapat mengambil token ID di objek user:

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

    REST

    Memanggil signInWithPassword akan menampilkan token ID dalam respons:

    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. Sertakan token ID di header otorisasi saat memanggil endpoint yang dilindungi oleh IAP.

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