Cara membagikan klien OAuth

Halaman ini menjelaskan cara membagikan klien OAuth dengan aplikasi lain dalam organisasi Anda.

Ringkasan

Dengan berbagi klien OAuth antar-project, Anda tidak perlu membuat klien OAuth baru secara manual untuk setiap aplikasi dalam organisasi Anda. Setelah membuat satu klien OAuth secara manual, Anda dapat menetapkannya secara terprogram ke beberapa aplikasi.

Berbagi klien OAuth juga digunakan untuk membagikan klien OAuth kepada agen yang Anda inginkan agar dapat mengaktifkan Identity-Aware Proxy (IAP), tetapi tidak memiliki akses ke halaman Kredensial.

Berbagi klien OAuth juga digunakan saat aplikasi menggunakan klien OAuth yang dikelola Google untuk alur browser dan Anda ingin mengaktifkan akses terprogram ke aplikasi.

Sebelum memulai

Buat klien OAuth baru dengan menyelesaikan langkah-langkah di Pembuatan klien OAuth atau Anda dapat menggunakan klien OAuth yang ada.

Akses terprogram

Bagian ini menjelaskan langkah-langkah untuk mengaktifkan klien OAuth guna mendapatkan akses terprogram ke aplikasi Anda.

  1. Mencantumkan klien OAuth dalam daftar yang diizinkan untuk akses terprogram.

    Anda dapat mengizinkan daftar client ID OAuth yang dimiliki oleh organisasi Anda dan Anda ingin memberikan akses terprogram ke aplikasi.

    Anda dapat mengizinkan klien OAuth di resource dan layanan di tingkat organisasi, project, dan folder.

    gcloud

    1. Jalankan perintah berikut untuk menyiapkan file SETTING_FILE. Perbarui nilai sesuai kebutuhan.

        cat << EOF > SETTING_FILE
          access_settings:
            oauth_settings:
              programmatic_clients: ["clientId1", "clientId2", ..]
        EOF
      
    2. Gunakan perintah gcloud iap settings set untuk mengizinkan klien OAuth di tingkat yang diinginkan.

      gcloud iap settings set SETTING_FILE [--organization=ORGANIZATION --folder=FOLDER --project=/PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION
      

      Contoh perintah:

      Untuk memasukkan client ID OAuth ke dalam daftar yang diizinkan di resource dalam organisasi, jalankan perintah berikut.

        gcloud iap settings set SETTING_FILE --organization=ORGANIZATION
        

      Untuk mengizinkan client ID OAuth di resource dalam folder, jalankan perintah berikut.

        gcloud iap settings set SETTING_FILE --folder=FOLDER
        

      Untuk mengizinkan client ID OAuth di semua resource jenis web dalam project, jalankan perintah berikut.

        gcloud iap settings set SETTING_FILE --project=PROJECT --resource-type=iap_web
        

      Untuk mengizinkan client ID OAuth di layanan App Engine dalam project, jalankan perintah berikut.

        gcloud iap settings set SETTING_FILE --project=PROJECT --resource-type=app-engine --service=SERVICE
        

      Ganti kode berikut:

      • FOLDER: ID folder.
      • ORGANIZATION: ID organisasi.
      • PROJECT: Project ID.
      • RESOURCE_TYPE: Jenis resource IAP. Harus berupa app-engine, iap_web, compute, organization, atau folder.
      • SERVICE: Nama layanan. Ini bersifat opsional jika resource-type adalah compute atau app-engine.
      • VERSION: Nama versi. Ini tidak berlaku untuk compute, dan bersifat opsional jika resource-type adalah app-engine.

    API

    1. Jalankan perintah berikut untuk menyiapkan file iap_settings.json. Perbarui nilai sesuai kebutuhan.

      cat << EOF > iap_settings.json
      {
        "access_settings": {
            "oauth_settings": {
                programmatic_clients: ["clientId1", "clientId2", ..]
              }
          }
      }
      EOF
      
    2. Dapatkan nama resource dengan menjalankan perintah gcloud iap settings get. Salin kolom nama dari output.
      Anda akan memerlukan nama tersebut di langkah berikut.

      gcloud iap settings get [--organization=ORGANIZATION --folder=FOLDER --project=PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION]
      
    3. Ganti RESOURCE_NAME dalam perintah berikut dengan nama dari langkah sebelumnya. IapSettings akan diperbarui.

      curl -X PATCH \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Accept: application/json" \
      -H "Content-Type: application/json" \
      -d @iap_settings.json \
      "https://iap.googleapis.com/v1/RESOURCE_NAME:iapSettings?updateMask=iapSettings.accessSettings.oauthSettings.programmaticClients"
      
  2. Login ke aplikasi menggunakan salah satu client ID OAuth yang diizinkan. Lihat Autentikasi terprogram.

Akses browser

Untuk mengaktifkan IAP agar dapat menggunakan client ID dan secret Anda menggunakan konsol Google Cloud, selesaikan petunjuk berikut.

Risiko

Meskipun berbagi klien antar-aplikasi Anda praktis, ada risikonya. Bagian ini menguraikan potensi risiko saat berbagi klien dan cara menguranginya.

Titik tunggal kegagalan

Menggunakan satu klien OAuth untuk banyak aplikasi akan menciptakan satu titik kegagalan. Jika klien dihapus atau diubah secara tidak benar, setiap aplikasi yang menggunakan klien tersebut akan terpengaruh.

Untuk mengurangi hal ini, hanya bagikan klien saat memenuhi kasus penggunaan penting untuk klien bersama.

Kebocoran rahasia klien

Untuk membagikan klien, Anda harus membagikan secret klien kepada orang dan skrip. Hal ini meningkatkan risiko kebocoran secret klien Anda. IAP tidak dapat membedakan antara token yang dibuat dari aplikasi Anda dan token yang dibuat dari secret klien yang bocor.

Akses ke resource IAP Anda dapat dipantau dengan Cloud Audit Logging. Jika Anda yakin ada kemungkinan rahasia klien Anda bocor, reset dari halaman Kredensial.

Untuk mengurangi risiko ini, lindungi secret klien seperti sandi. Batasi berbagi dan jangan pernah menyimpannya sebagai teks biasa.

Peniruan identitas pengguna yang diberi otorisasi

Jika secret klien Anda bocor, aplikasi berbahaya dapat menetapkan cookie browser autentikasi IAP di domainnya untuk meniru identitas pengguna yang diotorisasi. Dengan cookie ini, IAP akan mengautentikasi pengguna yang disamarkan untuk semua aplikasi yang membagikan secret klien yang bocor.

Untuk mengurangi risiko ini, hindari berbagi klien di antara resource yang juga berbagi pengguna resmi. Tetapkan izin per resource untuk memastikan bahwa meskipun pengguna yang disamarkan diautentikasi, IAP tidak akan memberikan otorisasi akses.

Pengumpulan identitas pengguna

Jika secret klien Anda bocor, aplikasi berbahaya dapat menggunakan client ID Anda untuk mengumpulkan identitas pengguna aplikasi Anda. Peristiwa ini dipicu saat pengguna mengunjungi aplikasi berbahaya.

Saat pengguna mengakses aplikasi yang dilindungi IAP untuk pertama kalinya, mereka akan diminta untuk membagikan identitas mereka ke aplikasi. Hal ini memberi pengguna kontrol atas informasi pribadi mereka. Saat pengguna mengizinkan untuk membagikan identitasnya, sistem login Google akan mencatat izin tersebut. IAP tidak akan meminta ulang pengguna pada permintaan berikutnya dari client ID apa pun dalam project yang sama.

Setiap pengguna yang telah mengizinkan untuk membagikan identitasnya dengan aplikasi Anda, dan yang mengunjungi aplikasi berbahaya, akan segera membagikan identitasnya tanpa izinnya.