Panduan ini menunjukkan cara mengelola integrasi aplikasi berbasis OAuth dengan Google Cloud.
Pada tingkat tinggi, untuk mengintegrasikan aplikasi berbasis OAuth, Anda melakukan hal berikut:
- Buat klien OAuth.
- Buat kredensial klien OAuth.
- Di kredensial klien OAuth, dapatkan rahasia klien. Untuk mempelajari risiko yang terkait dengan penyimpanan dan akses rahasia klien serta strategi yang dapat membantu memitigasinya, lihat Risiko dan mitigasi keamanan kredensial dan klien OAuth.
Setelah Anda menyelesaikan langkah-langkah ini, aplikasi berbasis OAuth dapat mengakses Google Cloud produk dan data.
Sebelum memulai
Anda harus menyiapkan Google Cloud organisasi.
Menginstal Google Cloud CLI. Setelah penginstalan, lakukan inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:
gcloud init
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
Anda harus telah menyiapkan workforce identity pool dan penyedia di organisasi tempat Anda akan mendaftarkan aplikasi OAuth. Pelajari cara menyiapkan workforce identity federation untuk Microsoft Entra ID, Okta, dan penyedia OIDC dan SAML 2.0 lainnya.
Peran yang diperlukan
Untuk mendapatkan izin yang
diperlukan untuk mendaftarkan aplikasi OAuth untuk organisasi Anda,
minta administrator Anda untuk memberi Anda
peran IAM IAM OAuth Client Admin (roles/iam.oauthClientAdmin
)
di project.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Mengelola klien OAuth
Bagian ini menunjukkan cara mengelola klien OAuth.
Buat klien OAuth
Untuk membuat klien OAuth, lakukan hal berikut:
gcloud
gcloud iam oauth-clients create APP_OAUTH_CLIENT_ID \
--project=PROJECT_ID \
--location=global \
--client-type="CONFIDENTIAL_CLIENT" \
--display-name="My OAuth application" \
--description="An application registration for MyApp" \
--allowed-scopes="https://www.googleapis.com/auth/cloud-platform" \
--allowed-redirect-uris="REDIRECT_URI" \
--allowed-grant-types="authorization_code_grant"
Ganti kode berikut:
APP_OAUTH_CLIENT_ID
: ID klien untuk merepresentasikan klien OAuth ini.PROJECT_ID
: ID project tempat Anda membuat penyedia dan workforce identity pool. Project harus dibuat di organisasi tempat workforce pool dan penyedia Anda dibuat.REDIRECT_URI
: URI pengalihan untuk aplikasi OAuth—misalnya,https://myapp.com/signin-callback
.
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
-d "{ \
'allowedGrantTypes': ['AUTHORIZATION_CODE_GRANT'], \
'allowedRedirectUris': ['REDIRECT_URI'], \
'allowedScopes': ['https://www.googleapis.com/auth/cloud-platform'], \
'clientType': 'CONFIDENTIAL_CLIENT', \
'description': 'My OAuth client description', \
'disabled': false, \
'displayName': 'My OAuth client'}" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients\?oauthClientId\=APP_OAUTH_CLIENT_ID
Ganti kode berikut:
PROJECT_ID
: ID project tempat Anda membuat penyedia dan workforce identity pool. Project harus dibuat di organisasi tempat workforce pool dan penyedia Anda dibuat.REDIRECT_URI
: URI pengalihan untuk aplikasi OAuth—misalnya,https://myapp.com/signin-callback
.APP_OAUTH_CLIENT_ID
: ID klien untuk merepresentasikan klien OAuth ini.
Setelah mendaftarkan aplikasi, Anda membuat kredensial klien OAuth dan mendapatkan rahasia yang digunakan aplikasi OAuth untuk mengakses Google Cloud.
Mencantumkan klien OAuth
Untuk mencantumkan klien OAuth terdaftar, jalankan perintah berikut:
gcloud
gcloud iam oauth-clients list \
--project=PROJECT_ID \
--location=global
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients
Ganti PROJECT_ID
dengan ID project tempat aplikasi OAuth Anda terdaftar.
Mendeskripsikan klien OAuth
Untuk mendeskripsikan klien OAuth, jalankan perintah berikut:
gcloud
gcloud iam oauth-clients describe APP_OAUTH_CLIENT_ID \
--project PROJECT_ID \
--location global
Ganti kode berikut:
APP_OAUTH_CLIENT_ID
: ID klien OAuth yang ingin Anda deskripsikanPROJECT_ID
: ID project tempat Anda mendaftarkan aplikasi OAuth
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID
Ganti kode berikut:
PROJECT_ID
: ID project tempat Anda mendaftarkan aplikasi OAuthAPP_OAUTH_CLIENT_ID
: ID klien OAuth yang ingin Anda deskripsikan
Mengupdate klien OAuth
Untuk mengupdate klien OAuth, jalankan perintah berikut.
gcloud
gcloud iam oauth-clients update APP_OAUTH_CLIENT_ID \
--project=PROJECT_ID \
--location=global \
--allowed-redirect-uris="REDIRECT_URI"
Ganti kode berikut:
APP_OAUTH_CLIENT_ID
: ID klien OAuth untuk klien OAuth yang ingin Anda perbaruiPROJECT_ID
: ID project tempat Anda mendaftarkan aplikasi OAuthREDIRECT_URI
: URI pengalihan untuk aplikasi OAuth
Untuk memperbarui kolom lain, gunakan tanda yang tercantum di gcloud iam oauth-clients update
.
REST
curl -d'{"allowedRedirectUris":"REDIRECT_URI"}' \
-H "Content-Type: application/json" -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID?update_mask=allowed_redirect_uris
Ganti kode berikut:
PROJECT_ID
: ID project tempat Anda mendaftarkan aplikasi OAuthAPP_OAUTH_CLIENT_ID
: ID klien OAuth untuk klien OAuth yang ingin Anda perbaruiREDIRECT_URI
: URI pengalihan untuk klien OAuth
Untuk memperbarui kolom lain, tetapkan update_mask
ke nama kolom yang tercantum di
gcloud iam oauth-clients update
.
Menghapus klien OAuth
Untuk menghapus klien OAuth, jalankan perintah berikut:
gcloud
gcloud iam oauth-clients delete APP_OAUTH_CLIENT_ID \
--project PROJECT_ID \
--location global
Ganti kode berikut:
APP_OAUTH_CLIENT_ID
: ID klien OAuth yang akan dihapusPROJECT_ID
: ID project tempat Anda mendaftarkan aplikasi OAuth
REST
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID
Ganti kode berikut:
PROJECT_ID
: ID project tempat Anda mendaftarkan aplikasi OAuthAPP_OAUTH_CLIENT_ID
: ID klien OAuth yang akan dihapus
Mengelola kredensial klien OAuth
Bagian ini menunjukkan cara mengelola kredensial klien OAuth untuk klien OAuth.
Buat kredensial klien OAuth
Untuk membuat kredensial klien OAuth, jalankan perintah berikut:
gcloud
gcloud iam oauth-clients credentials create APP_OAUTH_CLIENT_CREDENTIAL_ID \
--oauth-client=APP_OAUTH_CLIENT_ID \
--display-name='My OAuth client credential' \
--location='global'
Ganti kode berikut:
APP_OAUTH_CLIENT_CREDENTIAL_ID
: ID yang mewakili kredensial klien iniAPP_OAUTH_CLIENT_ID
: client ID OAuth yang dapat Anda peroleh dengan mendeskripsikan aplikasi klien OAuth yang terdaftar
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
-d "{'disabled': false, 'displayName': 'My OAuth client credential'}" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials\?oauthClientCredentialId=APP_OAUTH_CLIENT_CREDENTIAL_ID
Ganti kode berikut:
PROJECT_ID
: ID project tempat Anda mendaftarkan aplikasi OAuthAPP_OAUTH_CLIENT_ID
: client ID OAuth yang dapat Anda peroleh dengan mendeskripsikan aplikasi klien OAuth yang terdaftarAPP_OAUTH_CLIENT_CREDENTIAL_ID
: ID yang mewakili kredensial klien ini
Mencantumkan kredensial klien OAuth
Untuk mencantumkan kredensial klien OAuth, jalankan perintah berikut:
gcloud
gcloud iam oauth-clients credentials list \
--oauth-client=APP_OAUTH_CLIENT_ID \
--project=PROJECT_ID \
--location=global
Ganti kode berikut:
APP_OAUTH_CLIENT_ID
: ID klien OAuth yang kredensialnya akan dicantumkanPROJECT_ID
: ID project tempat Anda mendaftarkan aplikasi OAuth
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/$PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials
Ganti kode berikut:
PROJECT_ID
: ID project tempat Anda mendaftarkan aplikasi OAuthAPP_OAUTH_CLIENT_ID
: ID klien OAuth yang kredensialnya akan dicantumkan
Mendeskripsikan kredensial klien OAuth
Untuk mendeskripsikan kredensial klien OAuth, jalankan perintah berikut. Anda dapat mendapatkan rahasia klien dengan memeriksa output.
gcloud
gcloud iam oauth-clients credentials describe APP_OAUTH_CLIENT_CREDENTIAL_ID \
--oauth-client=APP_OAUTH_CLIENT_ID \
--location='global'
Ganti kode berikut:
APP_OAUTH_CLIENT_CREDENTIAL_ID
: URI pengalihan untuk klien OAuthAPP_OAUTH_CLIENT_ID
: ID klien OAuth yang dapat Anda peroleh dengan mendeskripsikan pendaftaran aplikasi klien
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID
Ganti kode berikut:
PROJECT_ID
: ID project tempat Anda mendaftarkan aplikasi OAuthAPP_OAUTH_CLIENT_CREDENTIAL_ID
: URI pengalihan untuk klien OAuthAPP_OAUTH_CLIENT_ID
: ID klien OAuth yang dapat Anda peroleh dengan mendeskripsikan pendaftaran aplikasi klien
Dalam output, clientSecret
adalah rahasia klien. Ini adalah rahasia yang digunakan aplikasi OAuth untuk mengakses Google Cloud.
Mengupdate kredensial klien OAuth
Untuk memperbarui kredensial klien OAuth, jalankan perintah berikut:
gcloud
gcloud iam oauth-clients credentials update APP_OAUTH_CLIENT_CREDENTIAL_ID \
--client-id=APP_OAUTH_CLIENT_ID \
--display-name="My new credential name" \
--location=global
REST
curl -d'{"displayName":"My new credential name"}' -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID?update_mask=display_name
Ganti kode berikut:
PROJECT_ID
: ID project tempat Anda mendaftarkan aplikasi OAuthAPP_OAUTH_CLIENT_CREDENTIAL_ID
: URI pengalihan untuk klien OAuthAPP_OAUTH_CLIENT_ID
: ID klien OAuth yang dapat Anda peroleh dengan mendeskripsikan pendaftaran aplikasi klien
Menonaktifkan kredensial klien OAuth
Sebelum dapat menghapus kredensial klien OAuth, Anda harus menonaktifkannya. Untuk menonaktifkan kredensial klien OAuth, jalankan perintah berikut:
gcloud
gcloud iam oauth-clients credentials update APP_OAUTH_CLIENT_CREDENTIAL_ID \
--oauth-client=APP_OAUTH_CLIENT_ID \
--disabled \
--project=PROJECT_ID \
--location=global
Ganti kode berikut:
PROJECT_ID
: ID project tempat Anda mendaftarkan aplikasi OAuthAPP_OAUTH_CLIENT_ID
: ID klien OAuthAPP_OAUTH_CLIENT_CREDENTIAL_ID
: ID kredensial klien yang akan dinonaktifkan
REST
curl -d'{"disabled":"true"}' \
-H "Content-Type: application/json" -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID?update_mask=disabled
Ganti kode berikut:
PROJECT_ID
: ID project tempat Anda mendaftarkan aplikasi OAuthAPP_OAUTH_CLIENT_ID
: ID klien OAuthAPP_OAUTH_CLIENT_CREDENTIAL_ID
: ID kredensial klien yang akan dinonaktifkan
Menghapus kredensial klien OAuth
Untuk menghapus kredensial klien OAuth, jalankan perintah berikut:
gcloud
gcloud iam oauth-clients credentials delete APP_OAUTH_CLIENT_CREDENTIAL_ID \
--project=PROJECT_ID \
--oauth-client=APP_OAUTH_CLIENT_ID \
--location=global
Ganti kode berikut:
APP_OAUTH_CLIENT_CREDENTIAL_ID
: ID klien OAuthPROJECT_ID
: ID project tempat Anda mendaftarkan aplikasi OAuthAPP_OAUTH_CLIENT_ID
: ID kredensial klien
REST
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID
Ganti kode berikut:
PROJECT_ID
: ID project tempat Anda mendaftarkan aplikasi OAuthAPP_OAUTH_CLIENT_ID
: ID kredensial klienAPP_OAUTH_CLIENT_CREDENTIAL_ID
: ID klien OAuth