ניהול אפליקציית OAuth

אתם יכולים ליצור, להציג, לעדכן ולמחוק לקוחות OAuth ופרטי כניסה של לקוחות כדי לשלב את האפליקציות שמבוססות על OAuth עם Google Cloud. רישום של לקוח OAuth מאפשר למשתמשים מאיחוד שירותי אימות הזהות של כוח העבודה להיכנס לאפליקציות שלכם ולגשת למשאבי Google Cloud .

ככלל, כדי לשלב אפליקציה שמבוססת על OAuth, צריך לבצע את הפעולות הבאות:

  1. יוצרים לקוח OAuth.
  2. יצירת פרטי כניסה של לקוח OAuth.
  3. בפרטי הכניסה של לקוח OAuth, מקבלים את סוד הלקוח. במאמר סיכוני אבטחה ואמצעי הגנה של לקוח OAuth ופרטי כניסה מוסבר על הסיכונים שקשורים לאחסון סוד הלקוח ולגישה אליו, ועל אסטרטגיות שיכולות לעזור לצמצם אותם.

אחרי שתשלימו את השלבים האלה, האפליקציה שמבוססת על OAuth תוכל לגשת למוצרים ולנתונים שלGoogle Cloud . אתם יכולים להפנות את המשתמשים לנקודת הקצה של ההרשאה (https://auth.cloud.google/authorize) כדי לקבל קוד הרשאה, ואז להשתמש בפרטי הכניסה הרשומים של לקוח OAuth כדי להחליף קודי הרשאה או טוקנים לרענון באמצעות Cloud OAuth API.

לפני שמתחילים

  1. צריך לוודא שיש לכם ארגון מוגדר ב- Google Cloud .

  2. התקינו את ה-CLI של Google Cloud. אחר כך, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

    gcloud init

    אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  3. צריך להגדיר מאגר זהויות של כוח עבודה וספק בארגון שבו תרשמו את אפליקציית 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

המאמרים הבאים