Halaman ini menjelaskan beberapa cara untuk memperoleh token ID OpenID Connect (OIDC) yang ditandatangani Google.
Untuk informasi tentang masa berlaku dan konten token ID, lihat token ID.
Token ID memiliki layanan atau aplikasi tertentu yang dapat digunakan,
yang ditentukan berdasarkan nilai klaim aud
-nya. Halaman ini menggunakan
istilah layanan target untuk merujuk pada layanan atau aplikasi tempat token ID
dapat digunakan untuk autentikasi.
Setelah mendapatkan token ID, Anda dapat menyertakannya ke
header Authorization
dalam permintaan ke layanan target.
Metode untuk mendapatkan token ID
Ada berbagai cara untuk mendapatkan token ID. Halaman ini menjelaskan metode berikut:
- Mendapatkan token ID dari server metadata
- Menggunakan layanan penghubung untuk membuat token ID
- Membuat token ID dengan meniru identitas akun layanan
Jika ingin agar token ID dapat diterima oleh aplikasi yang tidak dihosting di Google Cloud, Anda mungkin dapat menggunakan metode ini. Namun, Anda harus mengetahui apa yang menurut token ID diperlukan aplikasi.
Mendapatkan token ID dari server metadata
Saat kode Anda dijalankan pada resource yang dapat memiliki akun layanan yang terpasang padanya, server metadata untuk layanan terkait biasanya dapat memberikan token ID. Server metadata membuat token ID untuk akun layanan yang terpasang. Anda tidak bisa mendapatkan token ID berdasarkan kredensial pengguna dari server metadata.
Anda bisa mendapatkan token ID dari server metadata ketika kode Anda dijalankan di layanan Google Cloud berikut:
Untuk mengambil token ID dari server metadata, Anda harus mengkueri endpoint identitas untuk akun layanan, seperti yang ditunjukkan dalam contoh ini.
curl
Ganti AUDIENCE
dengan URI untuk layanan target,
misalnya http://www.example.com
.
curl -H "Metadata-Flavor: Google" \ 'http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=AUDIENCE'
PowerShell
Ganti AUDIENCE
dengan URI untuk layanan target,
misalnya http://www.example.com
.
$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=AUDIENCE") $value
Java
Untuk menjalankan contoh kode ini, Anda harus menginstal Library Klien Auth untuk Java.
Go
Node.js
Untuk menjalankan contoh kode ini, Anda harus menginstal Library Google Auth untuk Node.js
Python
Untuk menjalankan contoh kode ini, Anda harus menginstal Library Python Google Auth.
Ruby
Untuk menjalankan contoh kode ini, Anda harus menginstal Library Google Auth untuk Ruby.
Menggunakan layanan penghubung untuk membuat token ID
Beberapa layanan Google Cloud membantu Anda memanggil layanan lainnya. Layanan penghubung
ini dapat membantu menentukan kapan panggilan dilakukan, atau mengelola alur kerja yang
mencakup pemanggilan layanan. Layanan berikut dapat otomatis menyertakan
token ID, dengan nilai yang sesuai untuk klaim aud
, saat memulai
panggilan ke layanan yang memerlukan token ID:
- Pub/Sub
- Pub/Sub memungkinkan komunikasi asinkron antarlayanan. Anda dapat mengonfigurasi Pub/Sub untuk menyertakan token ID dengan pesan. Untuk mengetahui informasi selengkapnya, lihat Autentikasi untuk langganan push.
Membuat token ID dengan meniru identitas akun layanan
Peniruan akun layanan memungkinkan akun utama membuat kredensial berjangka pendek untuk akun layanan tepercaya. Akun utama kemudian dapat menggunakan kredensial ini untuk melakukan autentikasi sebagai akun layanan.
Sebelum akun utama dapat meniru identitas akun layanan, akun utama harus memiliki peran IAM di akun layanan tersebut yang memungkinkan peniruan identitas. Jika akun utama itu sendiri adalah akun layanan lain, akan tampak lebih mudah untuk memberikan izin yang diperlukan secara langsung ke akun layanan tersebut, dan memungkinkannya meniru identitasnya sendiri. Konfigurasi ini, yang dikenal sebagai peniruan identitas diri, menciptakan kerentanan keamanan, karena memungkinkan akun layanan membuat token akses yang dapat diperbarui seterusnya.
Peniruan akun layanan harus selalu melibatkan dua akun utama: akun utama yang mewakili pemanggil, dan akun layanan yang ditiru identitasnya, yang disebut akun layanan yang memiliki hak istimewa.
Untuk membuat token ID dengan meniru akun layanan, gunakan proses umum berikut.
Untuk petunjuk langkah demi langkah, lihat Membuat token ID.
Identifikasi atau buat akun layanan untuk menjadi akun layanan yang memiliki hak istimewa.
- Lihat dokumentasi produk untuk mengidentifikasi peran yang diperlukan guna memanggil layanan target. Berikan peran ini ke akun layanan di layanan target.
Identifikasi akun utama yang akan melakukan peniruan identitas, dan siapkan Kredensial Default Aplikasi (ADC) agar dapat menggunakan kredensial untuk akun utama ini.
Untuk lingkungan pengembangan, akun utama biasanya adalah akun pengguna yang Anda berikan ke ADC dengan menggunakan gcloud CLI. Namun, jika Anda menjalankannya di resource yang terpasang dengan akun layanan, akun layanan yang terpasang adalah akun utama.
Beri akun utama peran Service Account OpenID Connect Identity Token Creator (
roles/iam.serviceAccountOpenIdTokenCreator
).Gunakan IAM Credentials API untuk membuat token ID untuk akun layanan yang diotorisasi.
Langkah selanjutnya
- Pelajari token ID.
- Gunakan perintah shell untuk mengkueri server metadata Compute Engine.
- Pelajari metode autentikasi lebih lanjut.