אתם יכולים ליצור, להציג, לעדכן ולמחוק לקוחות OAuth ופרטי כניסה של לקוחות כדי לשלב את האפליקציות שמבוססות על OAuth עם Google Cloud. רישום של לקוח OAuth מאפשר למשתמשים מאיחוד שירותי אימות הזהות של כוח העבודה להיכנס לאפליקציות שלכם ולגשת למשאבי Google Cloud .
ככלל, כדי לשלב אפליקציה שמבוססת על OAuth, צריך לבצע את הפעולות הבאות:
- יוצרים לקוח OAuth.
- יצירת פרטי כניסה של לקוח OAuth.
- בפרטי הכניסה של לקוח OAuth, מקבלים את סוד הלקוח. במאמר סיכוני אבטחה ואמצעי הגנה של לקוח OAuth ופרטי כניסה מוסבר על הסיכונים שקשורים לאחסון סוד הלקוח ולגישה אליו, ועל אסטרטגיות שיכולות לעזור לצמצם אותם.
אחרי שתשלימו את השלבים האלה, האפליקציה שמבוססת על OAuth תוכל לגשת למוצרים ולנתונים שלGoogle Cloud . אתם יכולים להפנות את המשתמשים לנקודת הקצה של ההרשאה (https://auth.cloud.google/authorize) כדי לקבל קוד הרשאה, ואז להשתמש בפרטי הכניסה הרשומים של לקוח OAuth כדי להחליף קודי הרשאה או טוקנים לרענון באמצעות Cloud OAuth API.
לפני שמתחילים
צריך לוודא שיש לכם ארגון מוגדר ב- Google Cloud .
התקינו את ה-CLI של Google Cloud. אחר כך, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud initאם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
צריך להגדיר מאגר זהויות של כוח עבודה וספק בארגון שבו תרשמו את אפליקציית OAuth. איך מגדירים איחוד של שירותי אימות הזהות של כוח העבודה ב-Microsoft Entra ID, ב-Okta ובספקי OIDC ו-SAML 2.0 אחרים.
התפקידים הנדרשים
כדי לקבל את ההרשאות שנדרשות לרישום אפליקציית OAuth בארגון, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד אדמין של לקוח OAuth ב-IAM (roles/iam.oauthClientAdmin) בפרויקט.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
ניהול לקוחות OAuth
בקטע הזה מוסבר איך לנהל לקוחות OAuth.
יצירת לקוח OAuth
כדי ליצור לקוח OAuth:
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"
מחליפים את מה שכתוב בשדות הבאים:
-
APP_OAUTH_CLIENT_ID: מזהה לקוח שמייצג את לקוח ה-OAuth הזה. -
PROJECT_ID: מזהה הפרויקט שבו יצרתם את מאגר הזהויות של כוח העבודה ואת הספק. הפרויקט צריך להיווצר בארגון שבו נוצרו מאגר כוח העבודה והספק. -
REDIRECT_URI: ה-URI להפניה מחדש של אפליקציית OAuth, לדוגמה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
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו יצרתם את מאגר הזהויות של כוח העבודה ואת הספק. הפרויקט צריך להיווצר בארגון שבו נוצרו מאגר כוח העבודה והספק. -
REDIRECT_URI: ה-URI להפניה מחדש של אפליקציית OAuth, לדוגמהhttps://myapp.com/signin-callback. -
APP_OAUTH_CLIENT_ID: מזהה לקוח שמייצג את לקוח ה-OAuth הזה.
אחרי שרושמים את האפליקציה, יוצרים את פרטי הכניסה של לקוח OAuth ומקבלים את הסוד שבו האפליקציה משתמשת כדי לגשת אלGoogle Cloud.
הצגת רשימה של לקוחות OAuth
כדי להציג רשימה של לקוחות OAuth רשומים, מריצים את הפקודה הבאה:
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
מחליפים את PROJECT_ID במזהה הפרויקט שבו רשומות אפליקציות ה-OAuth.
תיאור של לקוח OAuth
כדי לתאר לקוח OAuth, מריצים את הפקודה הבאה:
gcloud
gcloud iam oauth-clients describe APP_OAUTH_CLIENT_ID \
--project PROJECT_ID \
--location global
מחליפים את מה שכתוב בשדות הבאים:
-
APP_OAUTH_CLIENT_ID: המזהה של לקוח ה-OAuth שרוצים לתאר -
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית 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
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth -
APP_OAUTH_CLIENT_ID: המזהה של לקוח ה-OAuth שרוצים לתאר
עדכון של לקוח OAuth
כדי לעדכן לקוח OAuth, מריצים את הפקודה הבאה.
gcloud
gcloud iam oauth-clients update APP_OAUTH_CLIENT_ID \
--project=PROJECT_ID \
--location=global \
--allowed-redirect-uris="REDIRECT_URI"
מחליפים את מה שכתוב בשדות הבאים:
-
APP_OAUTH_CLIENT_ID: מזהה הלקוח ב-OAuth שרוצים לעדכן -
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth -
REDIRECT_URI: ה-URI להפניה אוטומטית של אפליקציית OAuth
כדי לעדכן שדות אחרים, משתמשים בדגלים שמפורטים ב-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
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth -
APP_OAUTH_CLIENT_ID: מזהה הלקוח של OAuth שרוצים לעדכן -
REDIRECT_URI: ה-URI של ההפניה ללקוח OAuth
כדי לעדכן שדות אחרים, מגדירים את update_mask לשמות השדות שמפורטים ב-gcloud iam oauth-clients update.
מחיקת לקוח OAuth
כדי למחוק לקוח OAuth, מריצים את הפקודה הבאה:
gcloud
gcloud iam oauth-clients delete APP_OAUTH_CLIENT_ID \
--project PROJECT_ID \
--location global
מחליפים את מה שכתוב בשדות הבאים:
-
APP_OAUTH_CLIENT_ID: מזהה הלקוח ב-OAuth שרוצים למחוק -
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית 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
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth -
APP_OAUTH_CLIENT_ID: מזהה הלקוח ב-OAuth שרוצים למחוק
ניהול פרטי הכניסה של לקוח OAuth
בקטע הזה מוסבר איך לנהל את פרטי הכניסה של לקוח OAuth.
יצירת פרטי כניסה של לקוח OAuth
כדי ליצור פרטי כניסה של לקוח OAuth, מריצים את הפקודה הבאה:
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'
מחליפים את מה שכתוב בשדות הבאים:
-
APP_OAUTH_CLIENT_CREDENTIAL_ID: מזהה שמייצג את פרטי הכניסה של הלקוח הזה -
APP_OAUTH_CLIENT_ID: מזהה הלקוח ב-OAuth, שאפשר לקבל על ידי תיאור של אפליקציית הלקוח הרשומה ב-OAuth
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
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth -
APP_OAUTH_CLIENT_ID: מזהה הלקוח ב-OAuth, שאפשר לקבל על ידי תיאור של אפליקציית הלקוח הרשומה ב-OAuth -
APP_OAUTH_CLIENT_CREDENTIAL_ID: מזהה שמייצג את פרטי הכניסה של הלקוח הזה
הצגת רשימה של פרטי כניסה של לקוח OAuth
כדי להציג רשימה של פרטי הכניסה של לקוח OAuth, מריצים את הפקודה הבאה:
gcloud
gcloud iam oauth-clients credentials list \
--oauth-client=APP_OAUTH_CLIENT_ID \
--project=PROJECT_ID \
--location=global
מחליפים את מה שכתוב בשדות הבאים:
-
APP_OAUTH_CLIENT_ID: מזהה הלקוח ב-OAuth שרוצים להציג את פרטי הכניסה שלו -
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית 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
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth -
APP_OAUTH_CLIENT_ID: מזהה הלקוח ב-OAuth שרוצים להציג את פרטי הכניסה שלו
תיאור של פרטי כניסה של לקוח OAuth
כדי לתאר פרטי כניסה של לקוח OAuth, מריצים את הפקודה הבאה. אפשר לקבל את סוד הלקוח על ידי בדיקת הפלט.
gcloud
gcloud iam oauth-clients credentials describe APP_OAUTH_CLIENT_CREDENTIAL_ID \
--oauth-client=APP_OAUTH_CLIENT_ID \
--location='global'
מחליפים את מה שכתוב בשדות הבאים:
-
APP_OAUTH_CLIENT_CREDENTIAL_ID: ה-URI להפניה לכתובת אחרת של לקוח ה-OAuth -
APP_OAUTH_CLIENT_ID: מזהה הלקוח ב-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/APP_OAUTH_CLIENT_CREDENTIAL_ID
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth -
APP_OAUTH_CLIENT_CREDENTIAL_ID: ה-URI להפניה לכתובת אחרת של לקוח ה-OAuth -
APP_OAUTH_CLIENT_ID: מזהה הלקוח ב-OAuth שאפשר לקבל על ידי תיאור הרישום של אפליקציית הלקוח
בפלט, clientSecret הוא סוד הלקוח. זהו הסוד שבו אפליקציית OAuth משתמשת כדי לגשת אל Google Cloud.
עדכון פרטי כניסה של לקוח OAuth
כדי לעדכן את פרטי הכניסה של לקוח OAuth, מריצים את הפקודה הבאה:
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
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth -
APP_OAUTH_CLIENT_CREDENTIAL_ID: ה-URI להפניה לכתובת אחרת של לקוח ה-OAuth -
APP_OAUTH_CLIENT_ID: מזהה הלקוח ב-OAuth שאפשר לקבל באמצעות תיאור הרישום של אפליקציית הלקוח
השבתת פרטי כניסה של לקוח OAuth
כדי למחוק פרטי כניסה של לקוח OAuth, צריך קודם להשבית אותם. כדי להשבית את פרטי הכניסה של לקוח OAuth, מריצים את הפקודה הבאה:
gcloud
gcloud iam oauth-clients credentials update APP_OAUTH_CLIENT_CREDENTIAL_ID \
--oauth-client=APP_OAUTH_CLIENT_ID \
--disabled \
--project=PROJECT_ID \
--location=global
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth -
APP_OAUTH_CLIENT_ID: מזהה הלקוח ב-OAuth -
APP_OAUTH_CLIENT_CREDENTIAL_ID: מזהה פרטי הכניסה של הלקוח שרוצים להשבית
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
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth -
APP_OAUTH_CLIENT_ID: מזהה הלקוח ב-OAuth -
APP_OAUTH_CLIENT_CREDENTIAL_ID: מזהה פרטי הכניסה של הלקוח שרוצים להשבית
מחיקת פרטי כניסה של לקוח OAuth
כדי למחוק פרטי כניסה של לקוח OAuth, מריצים את הפקודה הבאה:
gcloud
gcloud iam oauth-clients credentials delete APP_OAUTH_CLIENT_CREDENTIAL_ID \
--project=PROJECT_ID \
--oauth-client=APP_OAUTH_CLIENT_ID \
--location=global
מחליפים את מה שכתוב בשדות הבאים:
-
APP_OAUTH_CLIENT_CREDENTIAL_ID: מזהה הלקוח ב-OAuth -
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth -
APP_OAUTH_CLIENT_ID: מזהה פרטי הכניסה של הלקוח
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
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth -
APP_OAUTH_CLIENT_ID: מזהה פרטי הכניסה של הלקוח -
APP_OAUTH_CLIENT_CREDENTIAL_ID: מזהה הלקוח ב-OAuth
המאמרים הבאים
- החלפת טוקנים באמצעות Cloud OAuth API
- סקירה כללית על Cloud OAuth API
- שרת proxy לאימות זהויות (IAP) עם איחוד שירותי אימות הזהות של כוח עבודה