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

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

סמל מדיניות

סקירה כללית

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

כדי ליצור אסימון גישה מסוג OAuth 2.0, צריך להשתמש במדיניות OAuthv2. אסימון שנוצר ב-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 כך שתכלול את מזהה המשתמש באסימון כמו שמוצג למעלה.

כדי לקבל מזהה משתמש קצה באפליקציה, צריך להשתמש 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).


מסמך עזר של רכיב

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

<?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 הוצא משימוש

&lt;DisplayName&gt; רכיב

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

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

לא רלוונטי

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

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

&lt;AppId&gt; רכיב

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

<AppId>appIdString</AppId>

or:

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

request.formparam.app_id (הכתובת x-www-form-url מקודדת ומצוינת בבקשה גוף ההודעה)

נוכחות

אופציונלי

סוג מחרוזת
ערכים חוקיים

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

<מדורג> רכיב

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

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

false

נוכחות

אופציונלי

סוג ערך בוליאני
ערכים חוקיים true או false

&lt;EndUserId&gt; רכיב

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

<EndUserId>userIdString</EndUserId>

or:

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

request.formparam.enduser_id (הכתובת x-www-form-url מקודדת ומצוינת בבקשה גוף ההודעה)

נוכחות

אופציונלי

סוג מחרוזת
ערכים חוקיים

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

&lt;RevokeBeforeTimestamp&gt; רכיב

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

<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp>

or:

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

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

נוכחות

אופציונלי

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

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

משתני זרימה

המדיניות UndoOAuthV2 לא מגדירה משתני זרימה.

התייחסות לשגיאות

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

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