במדריך הזה מוסבר איך לנהל שילובים של אפליקציות מבוססי-OAuth עםGoogle Cloud.
כדי לשלב אפליקציה מבוססת-OAuth, מבצעים את הפעולות הבאות:
- יצירת לקוח OAuth.
- יצירת פרטי כניסה של לקוח OAuth.
- בפרטי הכניסה של לקוח ה-OAuth, מקבלים את סוד הלקוח. במאמר סיכוני אבטחה ופתרונות אפשריים שקשורים ללקוח OAuth ולפרטי הכניסה מוסבר על הסיכונים שקשורים לאחסון של סוד הלקוח ולגישה אליו, ועל אסטרטגיות שיכולות לעזור לצמצם את הסיכונים האלה.
אחרי שתשלימו את השלבים האלה, האפליקציה שמבוססת על OAuth תוכל לגשת אלGoogle Cloud המוצרים והנתונים.
לפני שמתחילים
צריך להגדיר ארגון ב- 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 ומקבלים את הסוד שמשמש את אפליקציית 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 עבור לקוח 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 עבור לקוח 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
כדי ליצור פרטי כניסה של לקוח 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