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

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

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

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

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

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

    להפעלת ה-API

שיטות אימות

ממשק Cloud OAuth API תומך בשתי שיטות לאימות לקוחות:

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

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

המרת קוד הרשאה לאסימונים

כדי להחליף קוד הרשאה של Google Cloud בטוקן גישה ובטוקן רענון, שולחים בקשת HTTP POST:

  • נקודת קצה בהיקף הארגון (דייר יחיד)

    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"
    

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

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

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

כשתוקף אסימון הגישה פג, צריך להשתמש בסוג ההרשאה 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"
    

מחליפים את REFRESH_TOKEN באסימון הרענון שהוחזר קודם מנקודת הקצה של האסימון.

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

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

שדה סוג תיאור
access_token string אסימון הגישה מסוג OAuth 2.0 שהונפק על ידי Cloud OAuth API כדי לקרוא ל-APIs‏ 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.

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