Artikel ini menunjukkan cara melakukan autentikasi menggunakan akun layanan saat Anda menggunakan Identity-Aware Proxy (IAP) dengan identitas eksternal.
Mendapatkan client ID dan rahasia Anda
Buka halaman IAP di Google Cloud konsol.
Klik tab APPLICATIONS.
Temukan aplikasi yang akan dikonfigurasi untuk menggunakan akun layanan.
Pilih Go to OAuth configuration dari menu overflow.
Halaman yang menampilkan client ID dan rahasia untuk aplikasi Anda akan muncul. Anda akan memerlukan informasi ini untuk mengonfigurasi Identity Platform di bagian berikutnya.
Mengonfigurasi Google sebagai penyedia identitas
Jika project Identity Platform Anda belum menggunakan Google untuk autentikasi, buat konfigurasi baru menggunakan client ID dan rahasia Anda:
Buka halaman Identity Platform Providers di Google Cloud konsol.
Buka halaman Penyedia IdentitasJika Anda menggunakan multi-tenancy Identity Platform, pilih tenant yang terkait dengan resource IAP Anda.
Klik Add provider.
Pilih Google dari daftar penyedia.
Di bagian Web SDK configuration, masukkan client ID dan rahasia yang Anda dapatkan di bagian sebelumnya.
Klik Save.
Jika sudah menggunakan autentikasi Google, Anda dapat menggunakan client ID Anda. Tindakan ini tidak akan mengganggu pengguna yang sudah ada.
Buka halaman Identity Platform Providers di Google Cloud konsol.
Buka halaman Penyedia IdentitasJika Anda menggunakan multi-tenancy Identity Platform, pilih tenant yang terkait dengan resource IAP Anda.
Temukan Google dalam daftar penyedia, lalu klik Edit.
Di bagian Allowed client IDs, klik Add.
Masukkan client ID yang Anda dapatkan di bagian sebelumnya.
Klik Save.
Menukar token Google dengan token Identity Platform
Saat pertama kali melakukan autentikasi dengan Google, Identity Platform akan menampilkan token ID Google. Kemudian, Anda dapat menukarnya dengan token Identity Platform
dengan memanggil
signInWithIdp:
Node.js
import * as firebase from 'firebase/app';
import 'firebase/auth';
const config = {
apiKey: '...',
};
firebase.initializeApp(config);
const cred = firebase.auth.GoogleAuthProvider.credential(google_oidc_id_token);
firebase.auth().signInWithCredential(cred)
.then((userCredential) => {
return userCredential.user.getIdToken();
})
.then((gcipIdToken) => {
// This token can now be used to access the resource.
})
.catch((error) => {
// Error occurred.
});
Python
SIGN_IN_WITH_IDP_API = 'https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp'
def exchange_google_id_token_for_gcip_id_token(api_key, tenant_id, google_open_id_connect_token):
url = SIGN_IN_WITH_IDP_API + '?key=' + api_key
data={'requestUri': 'http://localhost',
'returnSecureToken': True,
'postBody':'id_token=' + google_open_id_connect_token + '&providerId=google.com',
'tenantId': tenant_id}
resp = requests.post(url, data)
res = resp.json()
return res['idToken']
REST
Permintaan:
POST https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key=API-KEY
Isi:
{
"postBody":"id_token=GOOGLE-ID-TOKEN&providerId=google.com"
"requestUri": "http://localhost",
"returnIdpCredential": true,
"returnSecureToken": true,
"tenantId": "TENANT-ID"
}
Sertakan token ID Identity Platform di header otorisasi Anda untuk mengakses resource berdasarkan IAP:
curl -H "Authorization: Bearer GCIP-ID-TOKEN" "https://example.appspot.com/api"
Perhatikan bahwa identitas eksternal tidak mendukung IAM, jadi Anda harus memperbarui kontrol akses aplikasi secara manual untuk memberikan akses ke akun layanan Anda. Lihat JWT untuk identitas eksternal untuk mempelajari lebih lanjut.