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 melakukannya:
Aplikasi frontend Anda memanfaatkan Identity Platform secara langsung. Server API backend Anda di-build 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, tempat penggunaan pengalihan browser untuk mengautentikasi pengguna tidak memungkinkan.
Mengakses resource
Untuk mengakses resource secara terprogram menggunakan JWT akun layanan, lihat Melakukan autentikasi dengan JWT akun layanan.
Untuk mengakses resource secara terprogram menggunakan token ID, ikuti langkah-langkah berikut:
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 }'
Sertakan token ID dalam header otorisasi saat memanggil endpoint yang dilindungi oleh IAP.
curl -H "Authorization: Bearer GCIP-ID-TOKEN" "https://example.appspot.com/api"