אחזור פרטי משתמש באמצעות Cloud OAuth API

במדריך הזה מוסבר איך לאחזר הצהרות סטנדרטיות של OpenID Connect‏ (OIDC), הצהרות של ספריות בהתאמה אישית וחברויות בקבוצות של משתמשים מאומתים של כוח עבודה, באמצעות נקודת הקצה /userinfo ב-Cloud OAuth API‏ (cloudoauth.googleapis.com).

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

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

    התפקידים שנדרשים כדי להפעיל ממשקי API

    כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם אתם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, אתם יכולים לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים?

    להפעלת ה-API

נקודת קצה ברמת הארגון

‫Cloud OAuth API מספק נקודת קצה ברמת הארגון (דייר יחיד) שאפשר להשתמש בה כשאפליקציית הלקוח והמשאבים מוגבלים לארגון ספציפי ב-Google Cloud :

ה-method‏ organizations.userinfo של Cloud OAuth API מאחזרת הצהרות סטנדרטיות של OpenID Connect‏ (OIDC), הצהרות בהתאמה אישית וחברויות בקבוצות של המשתמש המאומת בארגון ספציפי.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • ‫TOKEN: אסימון הגישה מסוג OAuth 2.0 לטווח קצר, שהתקבל מנקודת הקצה להחלפת אסימונים.
  • ‫ORGANIZATION_ID: מזהה הארגון (מספרי) ב- Google Cloud .

ה-method של ה-HTTP וכתובת ה-URL:

GET https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/userinfo

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

במאגרי זהויות של כוח עבודה שלא מוגדרת בהם הקצאת הרשאות באמצעות SCIM, נקודת הקצה מחזירה מאפייני פרופיל, הצהרות בהתאמה אישית וחברויות בקבוצות באופן מוטבע:

{
  "sub": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
  "email": "user@example.com",
  "custom_claim1": "engineering",
  "custom_claim2": "us-west",
  "groups": [
    "looker-developers",
    "analytics-viewers"
  ]
}

תביעות משתמשים וקבוצות מבוזרות של SCIM

אם הבקשה מצליחה, נקודת הקצה /userinfo מחזירה סטטוס HTTP 200 OK ואובייקט JSON שמכיל הצהרות לגבי המשתמש המאומת.

פורמט ההצהרות תלוי בשאלה אם הספק של מאגר הזהויות של כוח העבודה משתמש בהקצאת SCIM:

הצהרות מוטבעות (מאגרי זהויות שאינם של SCIM)

במאגרי זהויות של כוח עבודה שלא מוגדרת בהם הקצאת הרשאות ידנית, נקודת הקצה מחזירה מאפייני פרופיל, הצהרות בהתאמה אישית וחברויות בקבוצות:

{
  "sub": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
  "email": "user@example.com",
  "custom_claim1": "engineering",
  "custom_claim2": "us-west",
  "groups": [
    "looker-developers",
    "analytics-viewers"
  ]
}

תביעות מבוזרות (מאגרי זהויות עם SCIM)

במאגרי זהויות של כוח עבודה שמופעלת בהם הקצאת הרשאות ידנית באמצעות SCIM, החברויות בקבוצות מוחזרות כהצהרות מבוזרות. התשובה כוללת את _claim_names ואת _claim_sources שמפנים לנקודת הקצה /groups:

{
  "sub": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
  "name": "Jane Doe",
  "email": "user@example.com",
  "_claim_names": {
    "groups": "src1"
  },
  "_claim_sources": {
    "src1": {
      "endpoint": "https://cloudoauth.googleapis.com/v1/common/groups"
    }
  }
}

שדות של תביעות בעלות

התשובה מכילה את השדות הבאים של טענות נכונות סטנדרטיות ומבוזרות:

שדה סוג תיאור
sub string המזהה הייחודי של חשבון המשתמש המאומת במאגר הזהויות של כוח העבודה.
name string השם המלא של המשתמש, אם הוא זמין מספק הזהויות.
email string כתובת האימייל של המשתמש המאומת.
groups array of strings (לא SCIM בלבד) רשימת החברויות בקבוצות של הארגון של המשתמש.
_claim_names object (רק אם SCIM מופעל) אובייקט JSON שממפה שמות של הצהרות מבוזרות (כמו groups) למזהי מקור ב-_claim_sources.
_claim_sources object (רק אם SCIM מופעל) אובייקט JSON שמגדיר את נקודת הקצה של המקור לכל מזהה של טענה מבוזרת.

למידע על תגובות שגיאה שמוחזרות על ידי נקודת הקצה /userinfo, קראו את המאמר שגיאות בקבוצות ובפרטי משתמשים ב-Cloud OAuth.

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