אתם צופים במסמכי התיעוד של 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 כוללים את המזהה של אפליקציית הפיתוח שמשויכת לאסימון. לאחר מכן תוכלו לבטל את האסימונים על סמך מזהה האפליקציה.
משתמשים ב-Developer apps API כדי לקבל רשימה של מזהי אפליקציות של מפתח ספציפי.
אפשר גם להשתמש ב-Developer apps API כדי לקבל פרטים על אפליקציה.
ביטול הרשאה לפי מזהה משתמש קצה באפליקציה
ביטול אסימוני גישה מסוג OAuth2 שמשויכים למזהה של משתמש קצה ספציפי באפליקציה. זהו האסימון שמשויך למזהה של המשתמש שהאסימונים הונפקו עבורו.
כברירת מחדל, אין שדה למזהה משתמש הקצה בטוקן הגישה של OAuth. כדי להפעיל ביטול של אסימוני גישה מסוג OAuth 2.0 לפי מזהה משתמש קצה, צריך להגדיר את מדיניות OAuthv2 כך שתכלול את מזהה המשתמש בטוקן, כמו שמוצג למעלה.
כדי לקבל מזהה של משתמש קצה באפליקציה, משתמשים ב-Developer apps API.
דוגמאות
בדוגמאות הבאות נעשה שימוש במדיניות Revoke OAuth V2 (ביטול 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 כדי לתת למדיניות שם אחר בשפה טבעית, לסימון המדיניות בכלי לעריכת פרוקסי בממשק המשתמש לניהול.
<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>