הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.
לעיון במסמכי התיעוד של
Apigee Edge
כשמפתח רושם אפליקציה ב-Apigee, המערכת יוצרת באופן אוטומטי זוג של מפתח צרכן וסוד. אפשר לראות את זוג המפתח והסוד של הצרכן בממשק המשתמש של Apigee או לגשת אליהם דרך Apigee API.
בזמן רישום האפליקציה, המפתח בוחר מוצרי API אחד או יותר לשיוך לאפליקציה. מוצר API הוא אוסף של משאבים שאפשר לגשת אליהם באמצעות שרתי proxy ל-API. לאחר מכן, המפתח מעביר את מפתח ה-API (טוקן צרכן) כחלק מכל בקשה ל-API במוצר API שמשויך לאפליקציה. מידע נוסף זמין במאמר סיכום השינויים לפרסום.
המדיניות VerifyAPIKey מאפשרת לאכוף אימות של מפתחות API בזמן ריצה, כך שרק לאפליקציות עם מפתחות API מאושרים תהיה גישה לממשקי ה-API שלכם. המדיניות הזו מבטיחה שמפתחות ה-API תקפים, שלא בוטלו ושקיבלו אישור לצרוך את המשאבים הספציפיים שמשויכים למוצרי ה-API שלכם.
אפשר להשתמש במפתחות API כאסימוני אימות, או כדי לקבל אסימוני גישה מסוג OAuth. ב-OAuth, מפתחות API נקראים 'מזהה לקוח'. אפשר להשתמש בשמות האלה לסירוגין. מידע נוסף זמין במאמר בנושא דף הבית של OAuth.
מערכת Apigee מאכלסת באופן אוטומטי קבוצה של משתני זרימה כשמבצעים את מדיניות האימות של מפתח ה-API. מידע נוסף מופיע בקטע משתני זרימה שבהמשך.
המדיניות הזו היא מדיניות שניתנת להרחבה, והשימוש בה עשוי להשפיע על העלויות או על הניצול, בהתאם לרישיון שלכם ל-Apigee. למידע על סוגי מדיניות והשלכות השימוש, אפשר לעיין במאמר בנושא סוגי מדיניות.
במאמר אבטחת API באמצעות דרישת מפתחות API יש הדרכה שמראה איך ליצור שרת proxy ל-API שמשתמש במדיניות Verify API Key.
דוגמאות
מפתח בפרמטר של שאילתה
<VerifyAPIKey name="APIKeyVerifier">
<APIKey ref="request.queryparam.apikey" />
</VerifyAPIKey>בדוגמה הזו, המדיניות מצפה למצוא את מפתח ה-API במשתנה של זרימת נתונים שנקרא request.queryparam.apikey. המשתנה request.queryparam.{name}
הוא משתנה רגיל של Apigee flow שאוכלס בערך של פרמטר שאילתה שהועבר
בבקשת הלקוח.
הפקודה הבאה של curl מעבירה את מפתח ה-API כפרמטר של שאילתה:
curl http://myorg-test.apigee.net/mocktarget?apikey=IEYRtW2cb7A5Gs54A1wKElECBL65GVls
מפתח בכותרת
<VerifyAPIKey name="APIKeyVerifier">
<APIKey ref="request.header.x-apikey" />
</VerifyAPIKey>בדוגמה הזו, המדיניות מצפה למצוא את מפתח ה-API במשתנה של זרימת נתונים שנקרא request.header.x-apikey. המשתנה request.header.{name}
הוא משתנה רגיל של Apigee flow שאוכלס בערך של כותרת שהועברה
בבקשת הלקוח.
בדוגמת ה-cURL הבאה אפשר לראות איך מעבירים את מפתח ה-API בכותרת:
curl "http://myorg-test.apigee.net/mocktarget" -H "x-apikey:IEYRtW2cb7A5Gs54A1wKElECBL65GVls"
מפתח במשתנה
<VerifyAPIKey name="APIKeyVerifier">
<APIKey ref="requestAPIKey.key"/>
</VerifyAPIKey>המדיניות יכולה להתייחס לכל משתנה שמכיל את המפתח. המדיניות בדוגמה הזו מחילה את מפתח ה-API ממשתנה בשם requestAPIKey.key.
אתם קובעים איך המשתנה הזה יאוכלס. לדוגמה, אפשר להשתמש במדיניות Extract Variables כדי לאכלס את requestAPIKey.key מפרמטר שאילתה בשם myKey, כמו שמוצג בהמשך:
<ExtractVariables async="false" continueOnError="false" enabled="true" name="SetAPIKeyVar">
<Source>request</Source>
<QueryParam name="myKey">
<Pattern ignoreCase="true">{key}</Pattern>
</QueryParam>
<VariablePrefix>requestAPIKey</VariablePrefix>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>משתני זרימה של מדיניות הגישה
<AssignMessage async="false" continueOnError="false" enabled="true" name="accessverifyvars"> <AssignVariable> <Name>devFirstName</Name> <Ref>verifyapikey.verify-api-key.developer.firstName</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <AssignVariable> <Name>devLastName</Name> <Ref>verifyapikey.verify-api-key.developer.lastName</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <AssignVariable> <Name>devEmail</Name> <Ref>verifyapikey.verify-api-key.developer.email</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
מערכת Apigee מאכלסת באופן אוטומטי קבוצה של משתני זרימה כשמבצעים את מדיניות Verify API Key (אימות מפתח API) עבור מפתח API תקין. אפשר להשתמש במשתנים האלה כדי לגשת למידע כמו שם האפליקציה, מזהה האפליקציה ופרטים על המפתח או החברה שרשמו את האפליקציה. בדוגמה שלמעלה, אתם משתמשים במדיניות Assign Message כדי לגשת לשם הפרטי, לשם המשפחה ולכתובת האימייל של המפתח אחרי שמדיניות Verify API Key מופעלת.
לכל המשתנים האלה יש קידומת:
verifyapikey.{policy_name}בדוגמה הזו, שם המדיניות של מפתח ה-API הוא verify-api-key. לכן, כדי להפנות לשם הפרטי של המפתח ששולח את הבקשה, צריך לגשת למשתנה verifyapikey.verify-api-key.developer.firstName.
לומדים על Apigee
הפניה לרכיב
אלה הרכיבים והמאפיינים שאפשר להגדיר במדיניות הזו:
<VerifyAPIKey async="false" continueOnError="false" enabled="true" name="Verify-API-Key-1"> <DisplayName>Custom label used in UI</DisplayName> <APIKey ref="variable_containing_api_key"/> <CacheExpiryInSeconds ref="request.queryparam.cache_expiry">Default value</CacheExpiryInSeconds/> </VerifyAPIKey>
מאפיינים של <VerifyAPIKey>
בדוגמה הבאה מוצגים המאפיינים בתג <VerifyAPIKey>:
<VerifyAPIKey async="false" continueOnError="false" enabled="true" name="Verify-API-Key-1">
בטבלה הבאה מתוארים מאפיינים שמשותפים לכל רכיבי ההורה של המדיניות:
| מאפיין | תיאור | ברירת מחדל | נוכחות |
|---|---|---|---|
name |
השם הפנימי של המדיניות. הערך של מאפיין אפשר להשתמש ברכיב |
לא רלוונטי | חובה |
continueOnError |
מגדירים את הערך הגדרה ל- |
FALSE | אופציונלי |
enabled |
מגדירים את המדיניות למצב מגדירים את הערך |
TRUE | אופציונלי |
async |
המאפיין הזה הוצא משימוש. |
FALSE | הוצא משימוש |
אלמנט <DisplayName>
משתמשים בו בנוסף למאפיין name כדי לתת למדיניות שם אחר בשפה טבעית, לסימון המדיניות בכלי לעריכת פרוקסי בממשק המשתמש לניהול.
<DisplayName>Policy Display Name</DisplayName>
| ברירת מחדל |
לא רלוונטי אם לא מציינים את הרכיב הזה, המערכת משתמשת בערך של המאפיין |
|---|---|
| נוכחות | אופציונלי |
| סוג | String |
אלמנט <APIKey>
האלמנט הזה מציין את משתנה הזרימה שמכיל את מפתח ה-API. בדרך כלל, הלקוח שולח את מפתח ה-API כפרמטר של שאילתה, ככותרת HTTP או כפרמטר של טופס. לדוגמה, אם המפתח נשלח בכותרת שנקראת x-apikey, המפתח יימצא במשתנה: request.header.x-apikey
| ברירת מחדל | לא זמין |
|---|---|
| נוכחות | חובה |
| סוג | String |
מאפיינים
בטבלה הבאה מפורטים המאפיינים של הרכיב <APIKey>
| מאפיין | תיאור | ברירת מחדל | נוכחות |
|---|---|---|---|
| ref |
הפניה למשתנה שמכיל את מפתח ה-API. מותר להשתמש רק במיקום אחד לכל מדיניות. |
לא רלוונטי | חובה |
דוגמאות
בדוגמאות האלה, המפתח מועבר בפרמטרים ובכותרת שנקראת x-apikey.
כפרמטר של שאילתה:
<VerifyAPIKey name="APIKeyVerifier">
<APIKey ref="request.queryparam.x-apikey"/>
</VerifyAPIKey>ככותרת HTTP:
<VerifyAPIKey name="APIKeyVerifier">
<APIKey ref="request.header.x-apikey"/>
</VerifyAPIKey>כפרמטר של טופס HTTP:
<VerifyAPIKey name="APIKeyVerifier">
<APIKey ref="request.formparam.x-apikey"/>
</VerifyAPIKey>אלמנט <CacheExpiryInSeconds>
רכיב זה אוכף את ה-TTL במטמון, ומאפשר התאמה אישית של פרק הזמן לתפוגת מפתח ה-API שמאוחסן במטמון. אפשר לספק משתנה של זרימת נתונים ומשתנה ברירת מחדל. אם מספקים ערך, הערך של משתנה הזרימה מקבל קדימות על פני ערך ברירת המחדל שצוין.
<CacheExpiryInSeconds ref="request.queryparam.cache_expiry">Value 1</CacheExpiryInSeconds>
| ברירת מחדל | לא רלוונטי
אם לא מציינים את הרכיב הזה, תקופת התפוגה של מפתח ה-API ששמור במטמון היא 180 שניות. |
|---|---|
| נוכחות | אופציונלי |
| סוג | מספר שלם |
| ערכים תקינים | מספר שלם מ-1 עד 180, כולל. מציין את זמן התפוגה בשניות. |
מאפיינים
בטבלה הבאה מפורטים המאפיינים של הרכיב <CacheExpiryInSeconds>
| מאפיין | תיאור | ברירת מחדל | נוכחות |
|---|---|---|---|
| ref |
הפניה למשתנה של זרימת העבודה שמכיל את הערך של תפוגת המטמון, שמבוטא בשניות. אם מספקים ערך למשתנה של התהליך, הוא מקבל עדיפות על פני ערך ברירת המחדל שצוין. |
לא רלוונטי | אופציונלי |
סכימות
משתנים בתהליך
כשמחילים מדיניות של אימות מפתח API על מפתח API תקין, Apigee מאכלס קבוצה של משתני flow. המשתנים האלה זמינים למדיניות או לקוד שמופעלים בהמשך התהליך, ולרוב משמשים לביצוע עיבוד בהתאמה אישית על סמך מאפיינים של מפתח ה-API, כמו שם האפליקציה, מוצר ה-API שמשמש לאישור המפתח או מאפיינים מותאמים אישית של מפתח ה-API.
מדיניות מאכלסת כמה סוגים שונים של משתני זרימה, כולל:
- כללי
- אפליקציה
- מפתח
- Analytics
- מונטיזציה
לכל סוג של משתנה של זרימת עבודה יש קידומת שונה. כל המשתנים הם סקלריים, אלא אם צוין במפורש שהם מערכים.
משתני זרימה כלליים
בטבלה הבאה מפורטים משתני הזרימה הכלליים שאוכלסו על ידי המדיניות Verify API Key (אימות מפתח API). לכל המשתנים האלה יש קידומת:
verifyapikey.{policy_name}לדוגמה: verifyapikey.{policy_name}.client_id
המשתנים הזמינים כוללים:
| משתנה | תיאור |
|---|---|
client_id |
טוקן הצרכן (נקרא גם מפתח API או מפתח אפליקציה) שסופק על ידי האפליקציה ששולחת את הבקשה. |
client_secret |
הסוד של הלקוח שמשויך לטוקן הצרכן. |
redirection_uris |
כל כתובות ה-URI להפניה אוטומטית בבקשה. |
developer.app.id |
המזהה של המפתח או של האפליקציה של AppGroup ששולחת את הבקשה. |
developer.app.name |
שם האפליקציה של המפתח או AppGroup האפליקציה ששולחת את הבקשה. |
developer.id |
המזהה של המפתח או של AppGroup שרשומים כבעלים של האפליקציה ששולחת את הבקשה. |
developer.{custom_attrib_name} |
כל המאפיינים המותאמים אישית שנגזרים מפרופיל מפתח האפליקציה. |
DisplayName |
הערך של מאפיין ה-<DisplayName> של המדיניות. |
failed |
הערך מוגדר כ-true אם האימות של מפתח ה-API נכשל. |
{custom_app_attrib} |
כל מאפיין מותאם אישית שנגזר מפרופיל האפליקציה. מציינים את השם של המאפיין המותאם אישית. |
apiproduct.name* |
שם מוצר ה-API שמשמש לאימות הבקשה. |
apiproduct.{custom_attrib_name}* |
כל מאפיין מותאם אישית שנגזר מפרופיל מוצר ה-API. |
apiproduct.developer.quota.limit* |
מגבלת המכסה שמוגדרת במוצר ה-API, אם יש כזו. |
apiproduct.developer.quota.interval* |
מרווח המכסה שמוגדר במוצר ה-API, אם יש כזה. |
apiproduct.developer.quota.timeunit* |
יחידת הזמן של המכסה שמוגדרת במוצר ה-API, אם יש כזו. |
* משתני מוצרי API מאוכלסים באופן אוטומטי אם מוצרי ה-API מוגדרים עם סביבה, שרתי proxy ומשאבים תקינים (שנגזרים מ-proxy.pathsuffix). הוראות להגדרת מוצרי API זמינות במאמר
ניהול מוצרי API. |
|
משתנים של תהליך באפליקציה
המשתנים הבאים של זרימת העבודה, שמכילים מידע על האפליקציה, מאוכלסים על ידי המדיניות. לכל המשתנים האלה יש את הקידומת:
verifyapikey.{policy_name}.app.
לדוגמה:
verifyapikey.{policy_name}.app.name
המשתנים הזמינים כוללים:
| משתנה | תיאור |
|---|---|
name |
שם האפליקציה. |
id |
מזהה האפליקציה. |
accessType |
לא בשימוש ב-Apigee. |
callbackUrl |
כתובת ה-URL של הקריאה החוזרת של האפליקציה. בדרך כלל משתמשים בה רק ב-OAuth. |
DisplayName |
השם המוצג של האפליקציה. |
status |
סטטוס האפליקציה, למשל 'אושרה' או 'בוטלה'. |
apiproducts |
מערך שמכיל את רשימת מוצרי ה-API שמשויכים לאפליקציה. |
appFamily |
כל משפחת אפליקציות שמכילה את האפליקציה, או 'ברירת מחדל'. |
appParentStatus |
הסטטוס של אפליקציית ההורה, למשל 'פעילה' או 'לא פעילה' |
appType |
סוג האפליקציה הוא 'מפתח'. |
appParentId |
המזהה של אפליקציית ההורה. |
created_at |
חותמת התאריך והשעה שבהן נוצרה האפליקציה. |
created_by |
כתובת האימייל של המפתח שיצר את האפליקציה. |
last_modified_at |
חותמת התאריך והשעה שבה האפליקציה עודכנה לאחרונה. |
last_modified_by |
כתובת האימייל של המפתח שעדכן את האפליקציה לאחרונה. |
{app_custom_attributes} |
כל מאפיין של אפליקציה בהתאמה אישית. מציינים את השם של המאפיין המותאם אישית. |
משתני זרימת נתונים של קבוצת אפליקציות
המשתנים הבאים של זרימת העבודה, שמכילים מידע על AppGroups, מאוכלסים על ידי המדיניות. המאפיינים האלה של AppGroup מאוכלסים רק אם
הערך של verifyapikey.{policy_name}.app.appType הוא AppGroup.
לכל המשתנים האלה יש קידומת:
verifyapikey.{policy_name}.appgroup.
לדוגמה:
verifyapikey.{policy_name}.appgroup.name
המשתנים הזמינים כוללים:
| משתנה | תיאור |
|---|---|
name |
השם של קבוצת האפליקציות. |
id |
מזהה קבוצת האפליקציות. |
displayName |
השם המוצג של קבוצת האפליקציות. |
appOwnerStatus |
הסטטוס של בעל האפליקציה: active, inactive או login_lock. |
created_at |
חותמת התאריך והשעה שבהן נוצרה קבוצת האפליקציות. |
created_by |
כתובת האימייל של המפתח שיצר את קבוצת האפליקציות. |
last_modified_at |
חותמת התאריך והשעה שבה בוצע השינוי האחרון ב-AppGroup. |
last_modified_by |
כתובת האימייל של המפתח שביצע את השינוי האחרון ב-AppGroup. |
{appgroup_custom_attributes} |
כל מאפיין מותאם אישית של קבוצת אפליקציות. מציינים את השם של המאפיין המותאם אישית. |
משתנים בתהליך העבודה של מפתחים
המשתנים הבאים של זרימת העבודה, שמכילים מידע על המפתח, מאוכלסים על ידי המדיניות. לכל המשתנים האלה יש את הקידומת:
verifyapikey.{policy_name}.developerלדוגמה:
verifyapikey.{policy_name}.developer.id
המשתנים הזמינים כוללים:
| משתנה | תיאור |
|---|---|
id |
הפונקציה מחזירה {org_name}@@@{developer_id} |
userName |
שם המשתמש של המפתח. |
firstName |
השם הפרטי של המפתח. |
lastName |
שם המשפחה של המפתח. |
email |
כתובת האימייל של המפתח. |
status |
הסטטוס של המפתח: פעיל, לא פעיל או login_lock. |
apps |
מערך של אפליקציות שמשויכות למפתח. |
created_at |
חותמת התאריך והשעה שבהם נוצר חשבון המפתח. |
created_by |
כתובת האימייל של המשתמש שיצר את המפתח. |
last_modified_at |
חותמת התאריך והשעה שבה בוצע השינוי האחרון במפתח. |
last_modified_by |
כתובת האימייל של המשתמש ששינה את פרטי המפתח. |
{developer_custom_attributes} |
כל מאפיין מותאם אישית של מפתח. מציינים את השם של המאפיין המותאם אישית. |
משתנים ב-Analytics
המשתנים הבאים מאוכלסים אוטומטית ב-Analytics כשמחילים מדיניות של אימות מפתח API על מפתח API תקין. המשתנים האלה מאוכלסים רק על ידי המדיניות Verify API Key (אימות מפתח API) ומדיניות OAuth.
אפשר להשתמש במשתנים ובערכים כמאפיינים כדי ליצור דוחות ב-Analytics ולקבל תובנות לגבי דפוסי הצריכה של מפתחים ואפליקציות.
apiproduct.namedeveloper.app.nameclient_iddeveloper.id
משתנים בתהליך המונטיזציה
אחרי אימות המשתמש, מדיניות VerifyAPIKey בודקת את כל תוכניות התמחור שפורסמו כדי לקבוע איזו מהן פעילה, אם בכלל, על סמך זמני ההפעלה והתפוגה שלהן. אם נמצאה תוכנית תמחור פעילה שפורסמה, משתני הזרימה הבאים מאוכלסים:
| משתנה | תיאור |
|---|---|
mint.mintng_is_apiproduct_monetized |
true אם נמצאה תוכנית מחירים פעילה שפורסמה. |
mint.mintng_rate_plan_id |
מזהה תוכנית התמחור. |
mint.rateplan_end_time_ms |
תאריך התפוגה של תוכנית התמחור. לדוגמה: 1619433556408 |
mint.rateplan_start_time_ms |
שעת ההפעלה של תוכנית התמחור. לדוגמה: 1618433956209 |
הפניה לשגיאה
בקטע הזה מתוארים קודי התקלה והודעות השגיאה שמוחזרים, ומשתני התקלה שמוגדרים על ידי Apigee כשמדיניות כזו מפעילה שגיאה. חשוב לדעת את המידע הזה אם אתם מפתחים כללי תקלות לטיפול בתקלות. מידע נוסף על שגיאות שקשורות למדיניות ועל טיפול בשגיאות
שגיאות זמן ריצה
השגיאות האלה יכולות להתרחש כשהמדיניות מופעלת.
| קוד תקלה | סטטוס HTTP | מטרה |
|---|---|---|
keymanagement.service.consumer_key_missing_api_product_association |
400 |
חסר שיוך של פרטי הכניסה של האפליקציה למוצר API. צריך לשייך את האפליקציה של המפתח למוצר API. שימו לב שהדבר נכון לכל סוגי האפליקציות, כמו אפליקציות למפתחים ואפליקציות של קבוצות אפליקציות. |
keymanagement.service.DeveloperStatusNotActive |
401 |
למפתח שיצר את אפליקציית המפתחים שכוללת את מפתח ה-API שבו אתם משתמשים יש סטטוס לא פעיל. כשסטטוס מפתח האפליקציה מוגדר כלא פעיל, כל אפליקציות המפתחים שנוצרו על ידי אותו מפתח מושבתות. משתמש אדמין עם הרשאות מתאימות (למשל, אדמין של הארגון) יכול לשנות את הסטטוס של מפתח באחת מהדרכים הבאות:
|
keymanagement.service.invalid_client-app_not_approved |
401 |
הגישה לאפליקציה למפתחים שמשויכת למפתח ה-API נשללת. לאפליקציה שגישתה נשללה אין אפשרות לגשת למוצרי API או להפעיל API שמנוהל על ידי Apigee. מנהל חשבון ארגוני יכול לשנות את הסטטוס של אפליקציה למפתחים באמצעות Apigee API. ראו יצירת זוג מפתחות או עדכון הסטטוס של אפליקציה למפתחים. |
oauth.v2.FailedToResolveAPIKey |
401 |
המדיניות מצפה למצוא את מפתח ה-API במשתנה שצוין ברכיב <APIKey> של המדיניות. השגיאה הזו מתרחשת כשהמשתנה הצפוי לא קיים (אי אפשר לפתור אותו). |
oauth.v2.InvalidApiKey |
401 |
מפתח API התקבל על ידי Apigee, אבל הוא לא תקין. כש-Apigee מחפש את המפתח במסד הנתונים שלו, הוא צריך להיות זהה בדיוק למפתח שנשלח בבקשה. אם ה-API פעל בעבר, צריך לוודא שהמפתח לא נוצר מחדש. אם המפתח נוצר מחדש, השגיאה הזו תוצג אם תנסו להשתמש במפתח הישן. פרטים נוספים זמינים במאמר בנושא שליטה בגישה ל-API באמצעות רישום אפליקציות. |
oauth.v2.InvalidApiKeyForGivenResource |
401 |
מערכת Apigee קיבלה מפתח API, והוא תקף. עם זאת, הוא לא תואם למפתח מאושר באפליקציה למפתחים שמשויכת ל-proxy ל-API באמצעות מוצר. |
שגיאות בהטמעה
השגיאות האלה יכולות להתרחש כשפורסים שרת proxy שמכיל את המדיניות הזו.
| שם השגיאה | מטרה |
|---|---|
SpecifyValueOrRefApiKey |
לא צוין ערך או מפתח לאלמנט <APIKey>. |
משתני תקלות
המשתנים האלה מוגדרים כשמתרחשת שגיאת זמן ריצה. מידע נוסף על שגיאות שקשורות למדיניות
| משתנים | כאשר: | דוגמה |
|---|---|---|
fault.name="fault_name" |
fault_name הוא שם התקלה, כפי שמופיע בטבלה Runtime errors שלמעלה. שם התקלה הוא החלק האחרון של קוד התקלה. | fault.name Matches "FailedToResolveAPIKey" |
oauthV2.policy_name.failed |
policy_name הוא השם שהמשתמש הגדיר למדיניות שגרמה לשגיאה. | oauthV2.VK-VerifyAPIKey.failed = true |
דוגמאות לתגובות שגיאה
{
"fault":{
"faultstring":"Invalid ApiKey",
"detail":{
"errorcode":"oauth.v2.InvalidApiKey"
}
}
}{
"fault":{
"detail":{
"errorcode":"keymanagement.service.DeveloperStatusNotActive"
},
"faultstring":"Developer Status is not Active"
}
}דוגמה לכלל שגיאה
<FaultRule name="FailedToResolveAPIKey">
<Step>
<Name>AM-FailedToResolveAPIKey</Name>
</Step>
<Condition>(fault.name Matches "FailedToResolveAPIKey") </Condition>
</FaultRule>