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

מוצג המסמך של Apigee Edge.
עוברים אל מסמכי תיעוד של Apigee X.
מידע

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

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

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

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

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

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

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

כברירת מחדל, כש-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"
}

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

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

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

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

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

  • מדריך לפריסה של ענן פרטי

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

  • Apigee hybrid (היברידי)

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

מתן גישה בענן

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

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

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

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

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

אפשר להשתמש באפשרות קבלת הרשאה לקריאה ל-API של 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_max_search_limit לשרת הניהול ולהודעה מעבד מידע

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

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

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

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

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