Menukarkan token dengan Cloud OAuth API

Anda dapat menggunakan Cloud OAuth API (cloudoauth.googleapis.com) untuk menukar kode otorisasi atau token refresh dengan token akses OAuth 2.0 Google Cloud dan token ID OpenID Connect (OIDC) yang berumur pendek. Dalam integrasi Workforce Identity Federation, aplikasi Anda kemudian dapat memverifikasi token ID yang ditampilkan menggunakan kunci publik organisasi Anda dan menggunakan token akses untuk memanggilGoogle Cloud API atas nama pengguna gabungan.

Sebelum memulai

  1. Mengonfigurasi workforce identity pool dan penyedia workforce identity pool. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi Workforce Identity Federation.
  2. Mendaftarkan klien OAuth dan membuat kredensial klien. Untuk mengetahui informasi selengkapnya, lihat Mengelola aplikasi OAuth.
  3. Aktifkan Cloud OAuth API, jika belum diaktifkan.

    Peran yang diperlukan untuk mengaktifkan API

    Untuk mengaktifkan API, Anda memerlukan izin serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Service Usage Admin (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.

    Mengaktifkan API

Metode autentikasi

Untuk mengautentikasi klien OAuth Anda dengan Cloud OAuth API, teruskan client ID dan rahasia klien Anda dengan salah satu cara berikut:

  • Autentikasi Dasar HTTP (direkomendasikan): Teruskan client ID dan rahasia klien berenkode base64 di header Authorization:

    -H "Authorization: Basic $(echo -n 'CLIENT_ID:CLIENT_SECRET' | base64)"
    
  • Parameter isi permintaan: Teruskan parameter client_id dan client_secret dalam isi permintaan.

Menukarkan kode otorisasi dengan token

Setelah pengguna gabungan login dengan penyedia identitas (IdP) mereka di endpoint otorisasi terpaduGoogle Cloud (https://auth.cloud.google/authorize), endpoint otorisasi akan mengalihkan pengguna ke URI pengalihan aplikasi Anda dengan kode otorisasi. Untuk menukarkan kode otorisasi ini dengan token akses, token refresh, dan token ID OIDC, kirim permintaan HTTP POST ke endpoint cakupan organisasi (tenant tunggal):

  • Autentikasi Dasar HTTP (direkomendasikan):

    curl -X POST https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/token \
    -H "Authorization: Basic BASE64_ENCODED_CREDENTIALS" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    --data-urlencode "grant_type=authorization_code" \
    --data-urlencode "code=AUTHORIZATION_CODE" \
    --data-urlencode "redirect_uri=REDIRECT_URI"
    
  • Parameter isi permintaan:

    curl -X POST https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/token \
    -H "Content-Type: application/x-www-form-urlencoded" \
    --data-urlencode "grant_type=authorization_code" \
    --data-urlencode "code=AUTHORIZATION_CODE" \
    --data-urlencode "redirect_uri=REDIRECT_URI" \
    --data-urlencode "client_id=CLIENT_ID" \
    --data-urlencode "client_secret=CLIENT_SECRET"
    

Ganti kode berikut:

  • ORGANIZATION_ID: ID organisasi Google Cloud numerik Anda.
  • BASE64_ENCODED_CREDENTIALS: string berenkode base64 dari CLIENT_ID:CLIENT_SECRET.
  • AUTHORIZATION_CODE: kode otorisasi yang ditampilkan oleh endpoint otorisasi terpadu Google Cloud (https://auth.cloud.google/authorize).
  • REDIRECT_URI: URI pengalihan yang dikonfigurasi di klien OAuth Anda.
  • CLIENT_ID: client ID OAuth Anda yang terdaftar.
  • CLIENT_SECRET: rahasia klien OAuth Anda.

Memperbarui token akses

Saat masa berlaku token akses berakhir, gunakan jenis pemberian refresh_token untuk mendapatkan token akses baru yang berumur singkat dari endpoint khusus organisasi (tenant tunggal):

curl -X POST https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/token \
  -H "Authorization: Basic BASE64_ENCODED_CREDENTIALS" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode "grant_type=refresh_token" \
  --data-urlencode "refresh_token=REFRESH_TOKEN" \
  --data-urlencode "redirect_uri=REDIRECT_URI"

Ganti kode berikut:

  • ORGANIZATION_ID: ID organisasi Google Cloud numerik Anda.
  • BASE64_ENCODED_CREDENTIALS: string berenkode base64 dari CLIENT_ID:CLIENT_SECRET.
  • REFRESH_TOKEN: token refresh yang sebelumnya ditampilkan oleh endpoint token.
  • REDIRECT_URI: URI pengalihan yang dikonfigurasi di klien OAuth Anda.

Kolom respons token

Saat pertukaran token berhasil, Cloud OAuth API akan menampilkan status HTTP 200 OK yang berisi kolom berikut:

Kolom Jenis Deskripsi
access_token string Token akses OAuth 2.0 yang dikeluarkan oleh Cloud OAuth API untuk memanggil Google Cloud API.
refresh_token string Token refresh yang digunakan untuk mendapatkan token akses baru saat masa berlaku token saat ini berakhir.
expires_in integer Sisa masa aktif token akses dalam detik (biasanya 3599).
token_type string Jenis token (misalnya, Bearer).
scope string Daftar cakupan yang terkait dengan token.
id_token string Token ID OIDC yang berisi klaim identitas yang diautentikasi.

Untuk mengetahui informasi tentang respons error yang ditampilkan oleh Cloud OAuth API, lihat Error pertukaran token Cloud OAuth API.

Memverifikasi token ID OIDC

Untuk integrasi OIDC Looker, Anda dapat memverifikasi tanda tangan kriptografis id_token yang ditampilkan oleh Cloud OAuth API menggunakan JSON Web Key (JWK) publik organisasi Anda.

Ambil JWK publik organisasi dengan salah satu cara berikut:

  • Buat kueri endpoint JSON Web Key Set (JWKS) secara langsung: Kirim permintaan HTTP GET ke https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/.well-known/jwks.json.
  • Menggunakan dokumen discovery OIDC: Kirim permintaan GET HTTP ke endpoint discovery OIDC (https://auth.cloud.google/oidc/organizations/ORGANIZATION_ID/.well-known/openid-configuration) untuk mengambil URL endpoint JWKS dari kolom jwks_uri.

Di kedua URL endpoint, ganti ORGANIZATION_ID dengan ID organisasi Google Cloud numerik Anda.

Langkah berikutnya