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

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

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

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

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

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

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

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

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

    ב-Apigee Edge לענן פרטי (מקומי), האחריות המלאה על ההגדרות מוטלת עליך. מידע נוסף זמין במאמר פעולות והגדרות.

  • Apigee היברידי

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

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

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

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

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

שלב 2: מתן הרשאות oauth2 לתפקידים של opsadmin ו-orgadmin

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

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

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

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

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

שלב 4: מוסיפים את נכס oauth_max_search_limit לשרת הניהול ולמעבד ההודעות

במשימה הזו נעדכן את קובצי keymanagement.properties של שרת הניהול ושל מעבד ההודעות שלך כך שיכללו את המאפיין הבא: oauth_max_search_limit = 100. 100 הוא הערך המומלץ של Apigee, אבל אפשר להגדיר אותו לפי הצורך.

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

שלב 5: מגדירים מדיניות 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, ולהעביר את ה-User-ID ככותרת 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
  • שימוש במשתנה זרימה שמספק את מזהה משתמש הקצה