החלפת אסימונים באמצעות Cloud OAuth API

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

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

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

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

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

    להפעלת ה-API

שיטות אימות

כדי לאמת את לקוח ה-OAuth באמצעות Cloud OAuth API, צריך להעביר את מזהה הלקוח וסוד הלקוח באחת מהדרכים הבאות:

  • אימות בסיסי של HTTP (מומלץ): מעבירים את מזהה הלקוח וסוד הלקוח בקידוד Base64 בכותרת Authorization:

    -H "Authorization: Basic $(echo -n 'CLIENT_ID:CLIENT_SECRET' | base64)"
    
  • פרמטרים של גוף הבקשה: מעבירים את הפרמטרים client_id ו-client_secret בגוף הבקשה.

החלפת קוד הרשאה בטוקנים

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

  • אימות בסיסי של HTTP (מומלץ):

    curl -X POST https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/token \
    -H "Authorization: Basic BASE64_ENCODED_CREDENTIALS" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    --data-urlencode "grant_type=authorization_code" \
    --data-urlencode "code=AUTHORIZATION_CODE" \
    --data-urlencode "redirect_uri=REDIRECT_URI"
    
  • פרמטרים של גוף הבקשה:

    curl -X POST https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/token \
    -H "Content-Type: application/x-www-form-urlencoded" \
    --data-urlencode "grant_type=authorization_code" \
    --data-urlencode "code=AUTHORIZATION_CODE" \
    --data-urlencode "redirect_uri=REDIRECT_URI" \
    --data-urlencode "client_id=CLIENT_ID" \
    --data-urlencode "client_secret=CLIENT_SECRET"
    

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ORGANIZATION_ID: מזהה הארגון (מספרי) ב- Google Cloud.
  • ‫BASE64_ENCODED_CREDENTIALS: המחרוזת בקידוד base64 של CLIENT_ID:CLIENT_SECRET.
  • ‫AUTHORIZATION_CODE: קוד ההרשאה שמוחזר על ידי נקודת הקצה המאוחדת להרשאה של Google Cloud(https://auth.cloud.google/authorize).
  • ‫REDIRECT_URI: ה-URI להפניה אוטומטית שהוגדר בלקוח OAuth.
  • ‫CLIENT_ID: מזהה הלקוח הרשום שלכם ב-OAuth.
  • ‫CLIENT_SECRET: סוד הלקוח ב-OAuth.

רענון של טוקן גישה

כשתוקף אסימון הגישה פג, משתמשים בסוג ה-grant‏ refresh_token כדי לקבל אסימון גישה חדש לטווח קצר מנקודת הקצה ברמת הארגון (דייר יחיד):

curl -X POST https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/token \
  -H "Authorization: Basic BASE64_ENCODED_CREDENTIALS" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode "grant_type=refresh_token" \
  --data-urlencode "refresh_token=REFRESH_TOKEN" \
  --data-urlencode "redirect_uri=REDIRECT_URI"

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ORGANIZATION_ID: מזהה הארגון (מספרי) ב- Google Cloud.
  • ‫BASE64_ENCODED_CREDENTIALS: המחרוזת בקידוד base64 של CLIENT_ID:CLIENT_SECRET.
  • ‫REFRESH_TOKEN: טוקן הרענון שנקודת הקצה של הטוקן החזירה קודם.
  • ‫REDIRECT_URI: ה-URI להפניה אוטומטית שהוגדר בלקוח OAuth.

שדות של תגובת טוקן

כשהחלפת האסימון מצליחה, Cloud OAuth API מחזיר סטטוס HTTP 200 OK שמכיל את השדות הבאים:

שדה סוג תיאור
access_token string ‫אסימון הגישה מסוג OAuth 2.0 שהונפק על ידי Cloud OAuth API כדי לקרוא לממשקי ה-API של Google Cloud .
refresh_token string טוקן הרענון שמשמש לקבלת טוקני גישה חדשים כשהתוקף של הטוקן הנוכחי פג.
expires_in integer משך החיים שנותר של טוקן הגישה בשניות (בדרך כלל 3599).
token_type string סוג הטוקן (לדוגמה, Bearer).
scope string רשימה של היקפי ההרשאות שמשויכים לטוקן.
id_token string טוקן של מזהה OIDC שמכיל הצהרות זהות מאומתות.

במאמר שגיאות בהחלפת אסימונים ב-Cloud OAuth API מוסבר על תגובות השגיאה שמוחזרות על ידי Cloud OAuth API.

אימות הטוקן של מזהה ה-OIDC

בשילובים של Looker OIDC, אתם יכולים לאמת את החתימה הקריפטוגרפית של ה-id_token שמוחזר על ידי Cloud OAuth API באמצעות מפתחות ה-JSON Web Keys‏ (JWK) הציבוריים של הארגון.

מאחזרים את מפתחות ה-JWK הציבוריים של הארגון באחת מהדרכים הבאות:

  • שליחת שאילתה ישירות לנקודת הקצה של קבוצת מפתחות האינטרנט בפורמט JSON‏ (JWKS): שולחים בקשת HTTP GET אל https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/.well-known/jwks.json.
  • שימוש במסמך Discovery של OIDC: שולחים בקשת HTTP GET לנקודת הקצה של הגילוי של OIDC (https://auth.cloud.google/oidc/organizations/ORGANIZATION_ID/.well-known/openid-configuration) כדי לאחזר את כתובת ה-URL של נקודת הקצה של JWKS מהשדה jwks_uri.

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

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