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

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

סמל מדיניות

סקירה כללית

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

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

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

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

כדי לקבל מזהה של משתמש קצה לאפליקציה, משתמשים ב-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> מקבל מספר שלם (ארוך) של 64 ביט, שמייצג את מספר אלפיות השנייה שחלפו מאז חצות, ב-1 בינואר 1970 לפי שעון UTC.


הפניה לרכיב

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

<?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>

מאפיינים של <ביטול OAuthV2>

<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-urlמקודדת ומצוינת בגוף הבקשה)

נוכחות

אופציונלי

תיאור מחרוזת
ערכים חוקיים

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

רכיב <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-urlמקודדת ומצוינת בגוף הבקשה)

נוכחות

אופציונלי

תיאור מחרוזת
ערכים חוקיים

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

האלמנט <CancelBeforeTimestamp>

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

<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp>

or:

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

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

נוכחות

אופציונלי

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

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

משתני זרימה

המדיניות 'ביטול OAuthV2' לא מגדירה משתני זרימה.

הפניה לשגיאות

בקטע הזה מתוארים קודי התקלות והודעות השגיאה שמוחזרים, ומשתני השגיאה שמוגדרים על ידי 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>

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