אתם צופים במסמכי העזרה של 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 |
השם הפנימי של המדיניות. הערך של המאפיין אפשר גם להשתמש ברכיב |
לא רלוונטי | חובה |
continueOnError |
מגדירים את הערך מגדירים את הערך ל- |
FALSE | אופציונלי |
enabled |
מגדירים את הערך מגדירים את הערך |
TRUE | אופציונלי |
async |
המאפיין הזה הוצא משימוש. |
FALSE | הוצא משימוש |
אלמנט <DisplayName>
אפשר להשתמש בו בנוסף למאפיין name
כדי לתייג את המדיניות בכלי העריכה של שרת ה-proxy בממשק המשתמש לניהול בשם אחר בשפה טבעית.
<DisplayName>Policy Display Name</DisplayName>
ברירת מחדל |
לא רלוונטי אם משמיטים את האלמנט הזה, המערכת משתמשת בערך של המאפיין |
---|---|
נוכחות | אופציונלי |
סוג | מחרוזת |
אלמנט <AppId>
מזהה האפליקציה של המפתח של האסימונים שרוצים לבטל. מעבירים משתנה שמכיל את מזהה האפליקציה או מזהה אפליקציה מילולי.
<AppId>appIdString</AppId> or: <AppId ref="request.queryparam.app_id"></AppId>
ברירת מחדל |
|
---|---|
נוכחות |
אופציונלי |
סוג | מחרוזת |
הערכים האפשריים |
משתנה תהליך שמכיל מחרוזת של מזהה אפליקציה או מחרוזת לטינית. |
אלמנט <Cascade>
אם true
ויש לכם אסימון גישה אטום רגיל, גם אסימון הרענון וגם אסימון הגישה יבוטלו אם <AppId>
או <EndUserId>
יתאים.
אם false
, רק אסימון הגישה מבוטל ואסימון הרענון לא משתנה. התנהגות זהה חלה רק על אסימוני גישה אטומים.
<Cascade>false<Cascade>
ברירת מחדל |
FALSE |
---|---|
נוכחות |
אופציונלי |
סוג | בוליאני |
הערכים האפשריים | true או false |
האלמנט <EndUserId>
מזהה משתמש הקצה באפליקציה של האסימון שרוצים לבטל. מעבירים משתנה שמכיל את מזהה המשתמש או מחרוזת אסימון לטינית.
<EndUserId>userIdString</EndUserId> or: <EndUserId ref="request.queryparam.access_token"></EndUserId>
ברירת מחדל |
|
---|---|
נוכחות |
אופציונלי |
סוג | מחרוזת |
הערכים האפשריים |
משתנה תהליך שמכיל מחרוזת של מזהה משתמש, או מחרוזת לטינית. |
האלמנט <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>