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