הפעלה של אחזור וביטול של אסימוני גישה מסוג OAuth 2.0 לפי מזהה משתמש קצה, מזהה האפליקציה או שניהם

אתם צופים במסמכי התיעוד של Apigee Edge.
כניסה למסמכי העזרה של Apigee X.
info

בקטע הזה מוסבר איך מפעילים אחזור וביטול של אסימוני גישה מסוג OAuth 2.0 לפי מזהה משתמש קצה, מזהה אפליקציה או שניהם. כדי להשתמש בתכונה 'מזהה משתמש קצה', צריך לבצע הגדרה מיוחדת כפי שמתואר בנושא הזה. הכוונה למשתמש באפליקציה שמפעיל את ה-API.

מתי כדאי להפעיל גישה למזהי משתמשי קצה

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

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

מידע על אסימוני גישה מסוג OAuth

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

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

כברירת מחדל, כש-Edge יוצר אסימון גישה מסוג OAuth 2.0, הפורמט של האסימון הוא:

{
 "issued_at" : "1421847736581",
 "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
 "scope" : "READ",
 "status" : "approved",
 "api_product_list" : "[PremiumWeatherAPI]",
 "expires_in" : "3599", //--in seconds
 "developer.email" : "tesla@weathersample.com",
 "organization_id" : "0",
 "token_type" : "BearerToken",
 "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
 "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
 "organization_name" : "myorg",
 "refresh_token_expires_in" : "0", //--in seconds
 "refresh_count" : "0"
}

שימו לב לנקודות הבאות:

  • השדה application_name מכיל את מזהה ה-UUID של האפליקציה שמשויכת לאסימון. אם מפעילים אחזור וביטול של אסימוני גישה מסוג OAuth 2.0 לפי מזהה אפליקציה, זהו מזהה האפליקציה שבו משתמשים.
  • השדה access_token מכיל את הערך של אסימון הגישה מסוג OAuth 2.0.

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

מעבירים את מזהה משתמש הקצה לנקודת הקצה ליצירת הטוקן. אפשר להעביר את המזהה של משתמש הקצה כפרמטר של שאילתה, כפרמטר של טופס או בכותרת (כפי שמוסבר בהמשך הנושא). אחרי שמגדירים את Edge כך שיכלול את מזהה משתמש הקצה באסימון, הוא נכלל בתור השדה app_enduser, כפי שמוצג בהמשך:

{
 "issued_at" : "1421847736581",
 "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
 "scope" : "READ",
 "app_enduser" : "6ZG094fgnjNf02EK",
 "status" : "approved",
 "api_product_list" : "[PremiumWeatherAPI]",
 "expires_in" : "3599", //--in seconds
 "developer.email" : "tesla@weathersample.com",
 "organization_id" : "0",
 "token_type" : "BearerToken",
 "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
 "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
 "organization_name" : "myorg",
 "refresh_token_expires_in" : "0", //--in seconds
 "refresh_count" : "0"
}

במאמרים הבאים בנושא Smart Docs מוסבר איך לבצע את קריאות ה-API שמבצעות את האחזורים והביטולים האלה:

הפעלת גישה לאסימוני OAuth 2.0 לפי מזהה משתמש ומזהה אפליקציה

האופן שבו מפעילים גישה לאסימוני OAuth 2.0 לפי מזהה משתמש ומזהה אפליקציה תלוי באופן שבו פרסתם את Edge:

  • פריסה מבוססת-ענן

    כשפורסים את Edge בענן, רוב ההגדרות מטופלות על ידי Apigee. אתם אחראים רק להגדרת מדיניות OAuth 2.0 כך שתוסיף את מזהה המשתמש לאסימון הגישה. מידע נוסף זמין בתהליך שמתואר בהמשך.

  • פריסה של Edge לענן פרטי

    ב-Apigee Edge for Private Cloud (אצלכם בארגון), אתם אחראים לחלוטין על ההגדרה. מידע נוסף זמין במאמר פעולות והגדרות.

  • Apigee Hybrid

    הגישה לאסימוני OAuth 2.0 לפי מזהה משתמש מופעלת כברירת מחדל. אתם אחראים רק להגדרת מדיניות OAuth 2.0 כך שתוסיף את מזהה המשתמש לאסימון הגישה. מידע נוסף זמין בשלב 5 של התהליך שבהמשך.

הפעלת גישה בענן

שלב 1: מפעילים את התכונה בארגון

צריך להפעיל את התכונה הזו בכל ארגון שבו רוצים לתמוך בה.

פנו אל התמיכה של Apigee Edge כדי לבקש לעדכן את הארגון.

שלב 2: הענקת הרשאות משאבים של OAuth2 לתפקידים opsadmin ו-orgadmin

רק לתפקידים orgadmin ו-opsadmin צריכות להיות הרשאות לבצע את הקריאות האלה לאחזור (get) ולביטול (put) של המשאב oauth2 על סמך מזהה משתמש קצה או מזהה אפליקציה.

אפשר להשתמש בקריאת ה-API Get Permission for a Resource כדי לראות לאילו תפקידים יש הרשאות get ו-put למשאב oauth2.

אם צריך להוסיף או להסיר הרשאות, צריך לפנות אל התמיכה של Apigee Edge כדי לבצע את העדכונים.

שלב 3: מעתיקים אסימוני גישה קיימים מסוג OAuth 2.0 לצמתי Cassandra

המשימה מתבצעת על ידי צוות התמיכה של Apigee: במשימה הזו, עותקים של אסימוני גישה קיימים מסוג OAuth 2.0 בארגונים המושפעים יועתקו ויישמרו בצמתים של Cassandra. התהליך הזה יבוצע בצמתים של Cassandra בכל אחד מה-pods של Apigee Edge. כך תוכלו לאחזר ולבטל קריאות API לכל אסימוני הגישה מסוג OAuth 2.0, הקיימים והחדשים.

שלב 4: מגדירים מדיניות OAuth 2.0 ליצירת אסימוני גישה שכוללים מזהי משתמשי קצה

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

כדי להגדיר את המדיניות כך שתכלול מזהה של משתמש קצה באסימון גישה, צריך לציין את משתנה הקלט שמכיל את מזהה משתמש הקצה. משתמשים בתג <AppEndUser> כדי לציין את המשתנה.

מדיניות OAuth 2.0 שמופיעה בהמשך, שנקראת GenerateAccessTokenClient, יוצרת אסימון גישה מסוג OAuth 2.0. שימו לב להוספת התג <AppEndUser> בכתב מודגש:

<OAuthV2 async="false" continueOnError="false" enabled="true" name="GenerateAccessTokenClient">
  <DisplayName>OAuth 2.0.0 1</DisplayName>
  <ExternalAuthorization>false</ExternalAuthorization>
  <Operation>GenerateAccessToken</Operation>
  <SupportedGrantTypes>
    <GrantType>client_credentials</GrantType>
  </SupportedGrantTypes>
  <GenerateResponse enabled="true"/>
  <GrantType>request.queryparam.grant_type</GrantType>
  <AppEndUser>request.header.appuserID</AppEndUser>
  <ExpiresIn>960000</ExpiresIn>
</OAuthV2>

לאחר מכן אפשר להשתמש בפקודת cURL הבאה כדי ליצור את אסימון הגישה מסוג OAuth 2.0, ולהעביר את מזהה המשתמש ככותרת appuserID:

curl -H "appuserID:6ZG094fgnjNf02EK" /
  https://myorg-test.apigee.net/oauth/client_credential/accesstoken?grant_type=client_credentials /
  -X POST /
  -d 'client_id=k3nJyFJIA3p62TKIkLO6OJNi87GYXFmP&client_secret=gk58jK5lIp943AY4'

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

  • משתמשים במשתנה של פרמטר טופס: request.formparam.appuserID
  • שימוש במשתנה תהליך שמספק את מזהה משתמש הקצה