ביטול מדיניות OAuth V2

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

סמל המדיניות

סקירה כללית

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

משתמשים במדיניות OAuthv2 כדי ליצור אסימון גישה מסוג OAuth 2.0. הפורמט של אסימון שנוצר ב-Apigee הוא:

{
  "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 מכיל את מזהה האפליקציה של המפתח שמשויך לאסימון.

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

<OAuthV2 name="GenerateAccessTokenClient">
    <Operation>GenerateAccessTokenV/Operation>
    ...
    <AppEndUser>request.queryparam.app_enduser</AppEndUser>
</OAuthV2>

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

ביטול לפי מזהה האפליקציה של המפתח

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

  • אפשר להשתמש ב-Developer apps API כדי לקבל רשימה של מזהי אפליקציות של מפתח ספציפי.

  • אפשר גם להשתמש ב-Developer apps API כדי לקבל פרטים על אפליקציה.

ביטול לפי מזהה משתמש קצה של אפליקציה

ביטול אסימוני גישה מסוג OAuth2 שמשויכים למזהה של משתמש קצה ספציפי באפליקציה. זהו האסימון שמשויך למזהה של המשתמש שאליו הונפקו האסימונים.

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

כדי לקבל מזהה של משתמש קצה באפליקציה, משתמשים ב-Developer apps API.

דוגמאות

בדוגמאות הבאות נעשה שימוש במדיניות ביטול OAuth V2 כדי לבטל אסימוני גישה מסוג OAuth2.

מזהה האפליקציה של המפתח

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

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

<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy">
  <DisplayName>Revoke OAuth v2.0-1</DisplayName>
  <AppId ref="request.queryparam.app_id"></AppId>
</RevokeOAuthV2>

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

ביטול לפני חותמת הזמן

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

בדוגמה הבאה מבטלים את אסימוני הגישה של אפליקציית פיתוח שנוצרה לפני 1 ביולי 2019:

<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy">
  <DisplayName>Revoke OAuth v2.0-1</DisplayName>
  <AppId ref="request.queryparam.app_id"></AppId>
  <RevokeBeforeTimestamp>1561939200000</RevokeBeforeTimestamp>
</RevokeOAuthV2>

האלמנט <RevokeBeforeTimestamp> מקבל מספר שלם (long) באורך 64 ביט שמייצג את מספר אלפיות השנייה שחלפו מאז חצות, ב-1 בינואר 1970 לפי שעון UTC.


הפניה לרכיב

בהפניה לרכיבים מתוארים הרכיבים והמאפיינים של המדיניות RevokeOAuthV2.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RevokeOAuthV2 continueOnError="false" enabled="true" name="GetOAuthV2Info-1">
  <DisplayName>Get OAuth v2.0 Info 1</DisplayName>
  <AppId ref="variable"></AppId>
  <EndUserId ref="variable"></EndUserId>
  <RevokeBeforeTimestamp ref="variable"></RevokeBeforeTimestamp>
  <Cascade>false</Cascade>
</RevokeOAuthV2>

מאפייני <RevokeOAuthV2>

<RevokeOAuthV2 continueOnError="false" enabled="true" name="Revoke-OAuth-v20-1">

בטבלה הבאה מתוארים מאפיינים שקיימים בכל רכיבי ההורה של המדיניות:

מאפיין תיאור ברירת מחדל נוכחות
name

השם הפנימי של המדיניות. הערך של המאפיין name יכול להכיל אותיות, מספרים, רווחים, מקפים, קווים תחתונים ונקודות. האורך המרבי של הערך הוא 255 תווים.

אפשר גם להשתמש ברכיב <DisplayName> כדי לתייג את המדיניות בכלי העריכה של שרת ה-proxy בממשק המשתמש לניהול, בשם שונה בשפה טבעית.

לא רלוונטי חובה
continueOnError

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

מגדירים את הערך ל-true כדי שההפעלה של התהליך תמשיך גם אם מדיניות מסוימת נכשלת.

FALSE אופציונלי
enabled

מגדירים את הערך true כדי לאכוף את המדיניות.

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

TRUE אופציונלי
async

המאפיין הזה הוצא משימוש.

FALSE הוצא משימוש

אלמנט <DisplayName>

אפשר להשתמש בו בנוסף למאפיין name כדי לתייג את המדיניות בכלי העריכה של שרת ה-proxy בממשק המשתמש לניהול בשם אחר בשפה טבעית.

<DisplayName>Policy Display Name</DisplayName>
ברירת מחדל

לא רלוונטי

אם משמיטים את האלמנט הזה, המערכת משתמשת בערך של המאפיין name של המדיניות.

נוכחות אופציונלי
סוג מחרוזת

אלמנט <AppId>

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

<AppId>appIdString</AppId>

or:

<AppId ref="request.queryparam.app_id"></AppId>
ברירת מחדל

request.formparam.app_id (קידוד x-www-form-urlencoded שצוין בגוף הבקשה)

נוכחות

אופציונלי

סוג מחרוזת
הערכים האפשריים

משתנה תהליך שמכיל מחרוזת של מזהה אפליקציה או מחרוזת לטינית.

אלמנט <Cascade>

אם true ויש לכם אסימון גישה אטום רגיל, גם אסימון הרענון וגם אסימון הגישה יבוטלו אם <AppId> או <EndUserId> יתאים. אם false, רק אסימון הגישה מבוטל ואסימון הרענון לא משתנה. התנהגות זהה חלה רק על אסימוני גישה אטומים.

<Cascade>false<Cascade>
ברירת מחדל

FALSE

נוכחות

אופציונלי

סוג בוליאני
הערכים האפשריים true או false

האלמנט <EndUserId>

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

<EndUserId>userIdString</EndUserId>

or:

<EndUserId ref="request.queryparam.access_token"></EndUserId>
ברירת מחדל

request.formparam.enduser_id (קידוד x-www-form-urlencoded שצוין בגוף הבקשה)

נוכחות

אופציונלי

סוג מחרוזת
הערכים האפשריים

משתנה תהליך שמכיל מחרוזת של מזהה משתמש, או מחרוזת לטינית.

האלמנט <RevokeBeforeTimestamp>

לבטל אסימונים שהונפקו לפני חותמת הזמן. הרכיב הזה פועל עם <AppId> ו-<EndUserId> כדי לאפשר לכם לבטל אסימונים לפני זמן ספציפי. ערך ברירת המחדל הוא המועד שבו המדיניות מופעלת.

<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp>

or:

<RevokeBeforeTimestamp ref="request.queryparam.revoke_since_timestamp"></RevokeBeforeTimestamp>
ברירת מחדל

חותמת הזמן שבה המדיניות מופעלת.

נוכחות

אופציונלי

סוג מספר שלם (long) ב-64 סיביות שמייצג את מספר אלפיות השנייה שחלפו מאז חצות, ב-1 בינואר 1970 לפי שעון UTC.
הערכים האפשריים

משתנה תהליך שמכיל חותמת זמן או חותמת זמן לטינית. חותמת הזמן לא יכולה להיות בעתיד ולא יכולה להיות לפני 1 בינואר 2014.

משתני תהליך

המדיניות RevokeOAuthV2 לא מגדירה משתני תהליך.

מסמך עזרה בנושא שגיאות

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

שגיאות זמן ריצה

השגיאות האלה יכולות להתרחש כשהמדיניות מופעלת. שמות השגיאות שמפורטים בהמשך הם המחרוזות שמוקצות למשתנה fault.name כשמתרחשת שגיאה. פרטים נוספים זמינים בקטע 'משתני תקלה' שבהמשך.

קוד השגיאה סטטוס HTTP סיבה
steps.oauth.v2.InvalidFutureTimestamp 500 חותמת הזמן לא יכולה להיות בעתיד.
steps.oauth.v2.InvalidEarlyTimestamp 500 חותמת הזמן לא יכולה להיות לפני 1 בינואר 2014.
steps.oauth.v2.InvalidTimestamp 500 חותמת הזמן לא תקינה.
steps.oauth.v2.EmptyAppAndEndUserId 500 השדות AppdId ו-EndUserId לא יכולים להיות ריקים.

שגיאות בפריסה

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

משתני תקלה

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

משתנים איפה דוגמה
fault.name="fault_name" fault_name הוא שם השגיאה, כפי שמופיע בטבלה שגיאות זמן ריצה שלמעלה. שם השגיאה הוא החלק האחרון בקוד השגיאה. fault.name Matches "IPDeniedAccess"
oauthV2.policy_name.failed policy_name הוא השם שהמשתמש ציין למדיניות שהפעילה את השגיאה. oauthV2.GetTokenInfo.failed = true
oauthV2.policy_name.fault.name policy_name הוא השם שהמשתמש ציין למדיניות שהפעילה את השגיאה. oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id
oauthV2.policy_name.fault.cause policy_name הוא השם שהמשתמש ציין למדיניות שהפעילה את השגיאה. oauthV2.GetTokenInfo.cause = ClientID is Invalid

דוגמה לתשובה עם שגיאה

{
   "fault":{
      "faultstring":"Timestamp is in the future.",
      "detail":{
         "errorcode":"steps.oauth.v2.InvalidFutureTimestamp"
      }
   }
}

דוגמה לכלל תקלה

<FaultRule name="RevokeOAuthV2 Faults">
    <Step>
        <Name>AM-InvalidTimestamp</Name>
    </Step>
    <Condition>(fault.name = "InvalidFutureTimestamp")</Condition>
</FaultRule>

נושאים קשורים