Mengambil info pengguna dengan Cloud OAuth API

Panduan ini menjelaskan cara mengambil klaim standar OpenID Connect (OIDC), klaim direktori kustom, dan keanggotaan grup untuk pengguna workforce yang diautentikasi menggunakan endpoint /userinfo di Cloud OAuth API (cloudoauth.googleapis.com).

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 menukar kode otorisasi dengan token akses. Untuk mengetahui informasi selengkapnya, lihat Menukarkan token dengan Cloud OAuth API.
  3. Pastikan token akses Anda menyertakan cakupan openid.
  4. 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

Endpoint lingkup organisasi

Cloud OAuth API menyediakan endpoint cakupan organisasi (tenant tunggal) yang dapat Anda gunakan saat aplikasi klien dan resource Anda dibatasi untuk organisasiGoogle Cloud tertentu:

Metode organizations.userinfo Cloud OAuth API mengambil klaim standar OpenID Connect (OIDC), klaim kustom, dan keanggotaan grup untuk pengguna yang diautentikasi di organisasi tertentu.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • TOKEN: token akses OAuth 2.0 berumur pendek yang diperoleh dari endpoint pertukaran token.
  • ORGANIZATION_ID: ID organisasi Google Cloud numerik Anda.

Metode HTTP dan URL:

GET https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/userinfo

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Untuk workforce identity pool tanpa penyediaan SCIM yang diaktifkan, endpoint akan menampilkan atribut profil, klaim kustom, dan keanggotaan grup secara inline:

{
  "sub": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
  "email": "user@example.com",
  "custom_claim1": "engineering",
  "custom_claim2": "us-west",
  "groups": [
    "looker-developers",
    "analytics-viewers"
  ]
}

Klaim pengguna dan grup terdistribusi SCIM

Saat permintaan berhasil, endpoint /userinfo akan menampilkan status HTTP 200 OK dan objek JSON yang berisi klaim untuk pengguna yang diautentikasi.

Format klaim bergantung pada apakah penyedia pool workforce identity Anda menggunakan penyediaan SCIM:

Klaim inline (pool identitas non-SCIM)

Untuk workforce identity pool tanpa penyediaan SCIM yang diaktifkan, endpoint menampilkan atribut profil, klaim kustom, dan keanggotaan grup secara inline:

{
  "sub": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
  "email": "user@example.com",
  "custom_claim1": "engineering",
  "custom_claim2": "us-west",
  "groups": [
    "looker-developers",
    "analytics-viewers"
  ]
}

Klaim terdistribusi (kumpulan identitas yang mendukung SCIM)

Untuk workforce identity pool dengan penyediaan SCIM yang diaktifkan, keanggotaan grup ditampilkan sebagai klaim terdistribusi. Responsnya mencakup _claim_names dan _claim_sources yang merujuk ke endpoint /groups:

{
  "sub": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
  "name": "Jane Doe",
  "email": "user@example.com",
  "_claim_names": {
    "groups": "src1"
  },
  "_claim_sources": {
    "src1": {
      "endpoint": "https://cloudoauth.googleapis.com/v1/common/groups"
    }
  }
}

Kolom klaim

Respons berisi kolom klaim standar dan terdistribusi berikut:

Kolom Jenis Deskripsi
sub string ID akun utama unik untuk pengguna yang diautentikasi di workforce identity pool.
name string Nama lengkap pengguna, jika tersedia dari penyedia identitas.
email string Alamat email pengguna yang diautentikasi.
groups array of strings (Khusus non-SCIM) Daftar keanggotaan grup perusahaan untuk pengguna.
_claim_names object (Khusus yang mengaktifkan SCIM) Objek JSON yang memetakan nama klaim terdistribusi (seperti groups) ke ID sumber di _claim_sources.
_claim_sources object (Khusus yang mendukung SCIM) Objek JSON yang menentukan endpoint sumber untuk setiap ID klaim terdistribusi.

Untuk mengetahui informasi tentang respons error yang ditampilkan oleh endpoint /userinfo, lihat Error grup dan info pengguna Cloud OAuth.

Langkah berikutnya