מוצג המסמך של Apigee Edge.
עוברים אל
מסמכי תיעוד של Apigee X. מידע
מה
המדיניות לאימות מפתח API מאפשרת לאכוף אימות של מפתחות API בזמן הריצה, וכך מאפשרת רק אפליקציות עם מפתחות API מאושרים ניגשות לממשקי ה-API. המדיניות הזו מבטיחה שמפתחות ה-API תקפים, לא בוטלו, והן מאושרות לצרוך את המשאבים הספציפיים המשויכים ל-API מוצרים.
דוגמאות
מפתח בפרמטר השאילתה
<VerifyAPIKey name="APIKeyVerifier"> <APIKey ref="request.queryparam.apikey" /> </VerifyAPIKey>
בדוגמה זו, המדיניות מצפה למצוא את מפתח ה-API במשתנה זרימה שנקרא
request.queryparam.apikey
המשתנה request.queryparam.{name}
הוא משתנה סטנדרטי של Edge שמאוכלס בערך של פרמטר שאילתה שהועבר
בבקשת הלקוח.
הפקודה הבאה 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}
הוא משתנה סטנדרטי של Edge שמאוכלס בערך של כותרת שהועברה
בבקשת הלקוח.
ב-cURL הבא אפשר לראות איך להעביר את מפתח ה-API בכותרת:
curl "http://myorg-test.apigee.net/mocktarget" -H "x-apikey:IEYRtW2cb7A5Gs54A1wKElECBL65GVls"
מפתח במשתנה
<VerifyAPIKey name="APIKeyVerifier"> <APIKey ref="requestAPIKey.key"/> </VerifyAPIKey>
המדיניות יכולה להפנות לכל משתנה שמכיל את המפתח. המדיניות בדוגמה הזאת מחלצת את מפתח ה-API ממשתנה בשם requestAPIKey.key.
אתם קובעים איך המשתנה יאוכלס. לדוגמה, אפשר להשתמש בפונקציה 'חילוץ' מדיניות בנושא משתנים שמשמשים לאכלוס 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>
Edge מאכלס באופן אוטומטי קבוצה של משתני זרימה כשמריצים את מפתח ה-API לאימות של מפתח API תקין. אפשר להשתמש במשתנים האלה כדי לגשת למידע כמו האפליקציה השם, מזהה האפליקציה ומידע על המפתח או החברה שרשמו את האפליקציה. ב בדוגמה שלמעלה, עליך להשתמש במדיניות 'הקצאת הודעה' כדי לגשת לשם הפרטי, שם המשפחה של המפתח השם וכתובת האימייל אחרי שמפתח ה-API לאימות מופעל.
התחילית של כל המשתנים האלה היא:
verifyapikey.{policy_name}
בדוגמה הזו, שם המדיניות של מפתח ה-API הוא 'verify-api-key'. לכן, אתם
את השם הפרטי של המפתח ששלח את הבקשה באמצעות גישה אל
משתנה verifyapikey.verify-api-key.developer.firstName.
ללמוד Edge
מידע על המדיניות בנושא אימות מפתחות API
כשמפתח רושם אפליקציה ב-Edge, דפדפן Edge יוצר מפתח צרכן באופן אוטומטי זוג סודי. אפשר לראות את מפתח הצרכן והזוג הסודי של האפליקציה בממשק המשתמש של Edge או לגשת אליהם מ-Edge API.
בזמן רישום האפליקציה, המפתח בוחר מוצר API אחד או יותר כדי לשייך לאפליקציה, כאשר מוצר API הוא אוסף של משאבים נגישים דרך שרתי proxy ל-API. לאחר מכן המפתח מעביר את מפתח ה-API (מפתח צרכן) כחלק מ כל בקשה ל-API במוצר API שמשויך לאפליקציה. מידע נוסף זמין בסיכום השינויים לפרסום.
אפשר להשתמש במפתחות API כאסימוני אימות או כדי לקבל גישת OAuth לאסימונים אישיים. ב-OAuth, מפתחות API נקראים 'מזהה לקוח'. אפשר להשתמש בשמות לסירוגין. מידע נוסף זמין במאמר דף הבית של OAuth.
Edge מאכלס באופן אוטומטי קבוצה של משתני זרימה כשמפעילים את המדיניות Verify API Key. הצגת זרימה במשתנים נוספים שבהמשך.
מסמך עזר של רכיב
בהמשך מפורטים הרכיבים והמאפיינים שאפשר להגדיר במדיניות הזו:
<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"/> </VerifyAPIKey>
<VerifyAPIKey> מאפיינים
בדוגמה הבאה מוצגים המאפיינים של התג <VerifyAPIKey>
:
<VerifyAPIKey async="false" continueOnError="false" enabled="true" name="Verify-API-Key-1">
בטבלה הבאה מתוארים מאפיינים שמשותפים לכל רכיבי ההורה של המדיניות:
מאפיין | תיאור | ברירת מחדל | נוכחות |
---|---|---|---|
name |
השם הפנימי של המדיניות. הערך של המאפיין אפשר להשתמש ברכיב |
לא רלוונטי | חובה |
continueOnError |
צריך להגדיר את הערך יש להגדיר ל- |
false | אופציונלי |
enabled |
צריך להגדיר את הערך צריך להגדיר את הערך |
true | אופציונלי |
async |
המאפיין הזה הוצא משימוש. |
false | הוצא משימוש |
<DisplayName> רכיב
צריך להשתמש בנוסף למאפיין name
כדי להוסיף תווית למדיניות
עורך proxy של ממשק משתמש לניהול עם שם אחר בשפה טבעית.
<DisplayName>Policy Display Name</DisplayName>
ברירת מחדל |
לא רלוונטי אם משמיטים את הרכיב הזה, הערך של המאפיין |
---|---|
נוכחות | אופציונלי |
סוג | מחרוזת |
<APIKey> רכיב
הרכיב הזה מציין את משתנה הזרימה שמכיל את מפתח ה-API. בדרך כלל, הלקוח שולח את מפתח ה-API
בפרמטר של שאילתה, בכותרת HTTP או בפרמטר של טופס. לדוגמה, אם המפתח נשלח בכותרת
שנקרא x-apikey
, המפתח יימצא במשתנה: request.header.x-apikey
ברירת מחדל | לא רלוונטי |
---|---|
נוכחות | חובה |
סוג | מחרוזת |
מאפיינים
בטבלה הבאה מתוארים המאפיינים של הרכיב <APIKey>
מאפיין | תיאור | ברירת מחדל | נוכחות |
---|---|---|---|
אזכור |
הפניה למשתנה שמכיל את מפתח ה-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>
סכימות
משתני זרימה
כשמדיניות אימות של מפתח API נאכפת על מפתח API חוקי, Edge מאכלס קבוצת תהליכים משתנים. המשתנים האלה זמינים לכללי מדיניות או לקוד שמופעל בשלב מאוחר יותר בתהליך, והם שמשמש לעיתים קרובות לביצוע עיבוד מותאם אישית על סמך מאפיינים של מפתח ה-API, כמו שם האפליקציה, מוצר ה-API המשמש לאישור המפתח, או המאפיינים המותאמים אישית של מפתח ה-API.
המדיניות מאכלסת כמה סוגים שונים של משתני זרימה, כולל:
- כללי
- אפליקציה
- מפתח
- חברה
- ניתוח נתונים
לכל סוג של משתנה זרימה יש קידומת שונה. כל המשתנים הם סקלריים מלבד אלה שצוינו באופן ספציפי כמערכים.
משתני זרימה כלליים
בטבלה הבאה מפורטים משתני הזרימה הכלליים שאוכלסו על ידי המדיניות 'אימות של מפתח API'. התחילית של כל המשתנים האלה היא:
verifyapikey.{policy_name}
לדוגמה: verifyapikey.{policy_name}.client_id
המשתנים הזמינים כוללים:
משתנה | תיאור |
---|---|
client_id |
מפתח הצרכן (שנקרא גם מפתח API או מפתח אפליקציה) שסופק על ידי האפליקציה המבקשת. |
client_secret |
סוד הצרכן שמשויך למפתח הצרכן. |
redirection_uris |
כל מזהה URI להפניה אוטומטית בבקשה. |
developer.app.id |
המזהה של אפליקציית הפיתוח שהגיש את הבקשה. |
developer.app.name |
שם האפליקציה של האפליקציה למפתחים שהגיש את הבקשה. |
developer.id |
המזהה של המפתח שרשום כבעלים של האפליקציה שממנה נשלחה הבקשה. |
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 זמינות בכתובת
שימוש בקצה
management API לפרסום ממשקי API. |
משתנים של זרימת אפליקציה
משתני הזרימה הבאים שמכילים מידע על האפליקציה מאוכלסים על ידי המדיניות. התחילית של כל המשתנים האלה היא:
verifyapikey.{policy_name}.app
.
לדוגמה:
verifyapikey.{policy_name}.app.name
המשתנים הזמינים כוללים:
משתנה | תיאור |
---|---|
name |
שם היישום. |
id |
המזהה של האפליקציה. |
accessType |
לא בשימוש על ידי Apigee. |
callbackUrl |
כתובת ה-URL לקריאה חוזרת (callback) של האפליקציה. בדרך כלל משמש רק ל-OAuth. |
DisplayName |
השם המוצג של האפליקציה. |
status |
סטטוס האפליקציה, למשל 'אושרה' או 'מבוטל'. |
apiproducts |
מערך שמכיל את הרשימה של מוצרי API שמשויכים לאפליקציה. |
appFamily |
כל משפחת אפליקציות שמכילה את האפליקציה, או 'ברירת מחדל'. |
appParentStatus |
הסטטוס של ההורה של האפליקציה, למשל 'פעיל' או 'לא פעיל' |
appType |
סוג האפליקציה – 'חברה' או 'Developer'. |
appParentId |
המזהה של אפליקציית ההורה. |
created_at |
חותמת התאריך/השעה שבה האפליקציה נוצרה. |
created_by |
כתובת האימייל של המפתח שיצר את האפליקציה. |
last_modified_at |
חותמת התאריך/שעה של העדכון האחרון של האפליקציה. |
last_modified_by |
כתובת האימייל של המפתח שעדכן לאחרונה את האפליקציה. |
{app_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} |
כל מאפיין מפתח בהתאמה אישית. מציינים את השם של המאפיין המותאם אישית. |
Company |
שם החברה, אם יש כזו, שמשויכת למפתח. |
משתני זרימה של החברה
משתני הזרימה הבאים, שכוללים מידע על החברה, מאוכלסים באמצעות המדיניות בנושא התחילית של כל המשתנים האלה היא:
verifyapikey.{policy_name}.company
לדוגמה:
verifyapikey.{policy_name}.company.name
המשתנים הזמינים כוללים:
משתנה | תיאור |
---|---|
name |
שם החברה. |
displayName |
השם המוצג של החברה. |
id |
מזהה החברה |
apps |
מערך שמכיל את רשימת האפליקציות של החברה. |
appOwnerStatus |
הסטטוס של בעלי האפליקציה: פעילה, לא פעילה או Login_lock.
|
created_at |
החותמת של התאריך/השעה שבה החברה נוצרה. |
created_by |
כתובת האימייל של המשתמש שיצר את החברה. |
last_modified_at |
החותמת של התאריך/השעה שבה החברה שונתה לאחרונה. |
last_modified_by |
כתובת האימייל של המשתמש שערך לאחרונה את שינוי החברה. |
{company_custom_attributes} |
כל מאפיין מותאם אישית של חברה. מציינים את השם של המאפיין המותאם אישית. |
משתני Analytics
המשתנים הבאים מאוכלסים באופן אוטומטי ב-Analytics כשבמדיניות אימות של מפתחות API נאכפת עבור מפתח API חוקי. המשתנים האלה מאוכלסים רק על ידי מפתח ה-API לאימות. המדיניות וכללי המדיניות של OAuth.
המשתנים והערכים יכולים לשמש כמאפיינים ליצירת דוחות Analytics כדי חשיפה לדפוסי הצריכה של מפתחים ואפליקציות.
- apiproduct.name
- developer.app.name
- client_id
- developer.id
התייחסות לשגיאות
בקטע הזה מתוארים קודי השגיאה והודעות השגיאה שהוחזרו, ומשתני התקלה שמוגדרים על ידי Edge כשהמדיניות הזו גורמת לשגיאה. חשוב לדעת את המידע הזה אם אתם מפתחים כללי כשל כדי לטפל בתקלות. מידע נוסף זמין במאמר מה צריך לדעת? מידע על שגיאות שקשורות למדיניות וטיפול פגמים.
שגיאות זמן ריצה
השגיאות האלה עשויות להתרחש כשהמדיניות מופעלת.
קוד תקלה | סטטוס HTTP | סיבה |
---|---|---|
keymanagement.service.CompanyStatusNotActive |
401 | לחברה המשויכת לאפליקציית המפתח, שיש לה את מפתח ה-API שבו השתמשת, יש סטטוס לא פעיל. כשסטטוס של חברה מוגדר כלא פעיל, לא ניתן לגשת מפתחים או אפליקציות שמשויכים לאותה חברה. מנהל חשבון ארגוני יכול לשנות את הסטטוס של חברה באמצעות ממשק ה-API לניהול. למידע נוסף, ראו הגדרת הסטטוס של חברה מסוימת. |
keymanagement.service.DeveloperStatusNotActive |
401 |
המפתח שיצר את האפליקציה למפתחים שיש לו את מפתח ה-API שבו השתמשת סטטוס לא פעיל. כשהסטטוס של מפתח אפליקציות מוגדר כלא פעיל, כל האפליקציות למפתחים שנוצרו על ידי אותו מפתח יושבתו. משתמש עם הרשאת אדמין עם ההרשאות המתאימות (למשל, אדמין ארגוני) יכול לשנות את הסטטוס של מפתח בדרכים הבאות דרכים:
|
keymanagement.service.invalid_client-app_not_approved |
401 | האפליקציה למפתחים שמשויכת למפתח ה-API מבוטלת. אפליקציה שבוטלה לא יכולה לגשת למוצרי API ולא להפעיל אף ממשק API שמנוהל על ידי Apigee Edge. מנהל חשבון ארגוני יכול לשנות את הסטטוס של אפליקציה למפתחים באמצעות ממשק ה-API לניהול. ראו אישור או ביטול של אפליקציית המפתחים. |
oauth.v2.FailedToResolveAPIKey |
401 | המדיניות מצפה למצוא את מפתח ה-API במשתנה שמצוין במדיניות <APIKey> רכיב. השגיאה הזו מתרחשת כשהערך צפוי אינו קיים (לא ניתן לפענח אותו). |
oauth.v2.InvalidApiKey |
401 | Edge התקבל מפתח API, אבל הוא לא תקין. כש-Edge מחפש את המפתח הוא חייב להתאים בדיוק לנתונים שנשלחו בבקשה. אם ה-API פעל קודם צריך לוודא שהמפתח לא נוצר מחדש. אם המפתח נוצר מחדש, יוצגו לך השגיאה הזו מופיעה אם מנסים להשתמש במפתח הישן. מידע נוסף זמין במאמר רישום אפליקציות וניהול API . |
oauth.v2.InvalidApiKeyForGivenResource |
401 | התקבל מפתח API על ידי Edge, והוא תקין. עם זאת, הוא לא תואם מפתח שאושר באפליקציה למפתחים המשויך לשרת ה-proxy ל-API דרך מוצר. |
שגיאות פריסה
השגיאות האלו עשויות להתרחש כאשר פורסים שרת proxy שמכיל את המדיניות הזו.
שם השגיאה | סיבה |
---|---|
SpecifyValueOrRefApiKey |
לא צוינו ערך או מפתח ברכיב <APIKey> . |
משתני כשל
המשתנים האלה מוגדרים כשמתרחשת שגיאה בסביבת זמן הריצה. מידע נוסף זמין במאמר מה צריך לדעת? על שגיאות שקשורות למדיניות.
משתנים | איפה | דוגמה |
---|---|---|
fault.name="fault_name" |
fault_name הוא שם השגיאה, כפי שמצוין בטבלה שגיאות זמן ריצה שלמעלה. שם השגיאה הוא החלק האחרון בקוד השגיאה. | 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>