Memecahkan masalah Workload Identity Federation

Halaman ini menjelaskan resolusi untuk error Workload Identity Federation umum.

Google Cloud API tidak menerima kredensial yang diterbitkan dari SecurityTokenService

Token akses yang ditampilkan oleh API SecurityTokenService adalah token akses federasi. Meskipun sebagian besar API Google Cloud mendukung federasi identitas, metode API tertentu mungkin memiliki batasan. Untuk daftar batasan, lihat Identity federation: produk dan batasan.

Jika mengalami error berikut, Anda mungkin mencoba menggunakan token akses gabungan dengan layanan yang tidak mendukungnya.

{
  "error": {
    "code": 401,
    "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
    "status": "UNAUTHENTICATED",
  }
}

Untuk mengatasi error ini, tukarkan token akses federasi dengan token akses tanpa batasan dengan memanggil GenerateAccessToken. Untuk mengetahui informasi selengkapnya, lihat Memperoleh kredensial berjangka pendek dengan federasi identitas.

Daftar Penyedia Identitas yang diberi izin untuk digunakan dengan Workload Identity Federation

Jika Anda mencoba mengonfigurasi penyedia identitas yang tidak diizinkan sebagai penyedia workload identity pool, Anda akan mengalami error berikut:

FAILED_PRECONDITION: Precondition check failed.
- '@type': type.googleapis.com/google.rpc.PreconditionFailure
  violations:
  - description: "Org Policy violated for value: '{PROVIDER}'."
    subject: orgpolicy:projects/{PROJECT}/locations/global/workloadIdentityPools/{POOL}
    type: constraints/iam.workloadIdentityPoolProviders

Untuk mengatasi masalah ini, ikuti petunjuk tentang Membatasi konfigurasi penyedia identitas guna mengizinkan penyedia identitas untuk digunakan dengan Workload Identity Federation.

JWK input tidak dalam format json yang valid

Jika Anda mengonfigurasi penyedia OIDC dan menerima error Input JWK is not in a valid json format, hal ini dapat terjadi karena endpoint yang diamankan dengan sertifikat yang ditandatangani sendiri tidak didukung oleh Google Cloud. Secara khusus, kolom x5c dan x5t tidak didukung dan harus dihapus dari JWK OIDC.

Untuk mengatasi masalah terkait JWK Anda, lakukan hal berikut:

  1. Edit JWK Anda dan hapus kolom x5c (Rantai Sertifikat X.509) dan x5t (Sidik Jari SHA-1 Sertifikat X.509).

    {
      "kty": "RSA",
      "use": "sig",
      "kid": "example-key-id",
      "alg": "RS256",
      "n": "base64url-modulus",
      "e": "AQAB"
    }
    
  2. Pastikan kolom JWK yang tersisa diformat dengan benar seperti yang dijelaskan dalam spesifikasi OIDC.

  3. Konfigurasi penyedia OIDC dengan JWK yang telah diupdate.

Terjadi error saat menghubungkan ke penerbit kredensial yang diberikan

Jika Anda menerima error berikut, mungkin karena Google Cloud tidak dapat mengambil dokumen metadata OIDC atau JWKS IdP Anda:

{
  "error": "invalid_grant",
  "error_description":"Error connecting to the given credential's issuer."
 }

Error ini biasanya terjadi karena endpoint tidak dikonfigurasi agar dapat dijangkau dari internet publik. Untuk mengatasi error ini, pastikan endpoint OIDC tersedia untuk publik dan sesuai dengan spesifikasi OIDC. Untuk informasi selengkapnya, lihat Menyiapkan penyedia identitas eksternal.

Jika Anda masih menerima error, periksa apakah penerbit token, yang mengklaim iss dalam token sudah benar.

Klaim google.subject yang dipetakan melebihi batas 127 byte

Jika Anda menerima error berikut, hal ini karena kredensial masuk yang diterima oleh SecurityTokenService API membuat klaim google.subject yang melebihi batas karakter:

{
  "error": "invalid_request",
  "error_description":"The size of mapped attribute google.subject exceeds the 127 bytes limit. Either modify your attribute mapping or the incoming assertion to produce a mapped attribute that is less than 127 bytes."
 }

Untuk mengatasi masalah ini, gunakan fungsi extract untuk menghapus karakter yang tidak diperlukan dan mengekstrak ID subjek unik dari klaim yang lebih panjang, misalnya:

google.subject=assertion.sub.extract('/users/{sub_claim}')

Error 429 Too Many Requests

Jika Anda menerima error 429 Too Many Requests, saat meminta token dari API SecurityTokenService, artinya project Google Cloud Anda telah melampaui batas kuota kecepatan untuk API tersebut.

Error ini menyertakan pesan yang mirip dengan berikut ini:

{
  "error": "quota_exceeded",
  "error_description":"The request was throttled due to rate limit: sts.googleapis.com/requests. Please retry after a few seconds."
 }

Untuk mengatasi masalah ini, identifikasi nama metrik sts.googleapis.com/requests yang diberikan dalam pesan error, temukan nama metrik yang sesuai di halaman Kuota IAM, konfirmasi bahwa persentase penggunaan melebihi kuota, lalu minta penambahan kuota.