הגדרת אימות של מפתח API

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

אפשר להגדיר אימות של מפתח API עבור API על ידי צירוף מדיניות מסוג Valid API Key. ההגדרה היחידה הנדרשת במדיניות של אימות מפתח API היא המיקום הצפוי של מפתח ה-API בבקשת הלקוח. שרת ה-API של שרת ה-API יבדוק את המיקום שציינתם, ויחלץ את מפתח ה-API. אם מפתח ה-API לא נמצא במיקום הרצוי, תופיע שגיאה והבקשה תידחה. מפתחות API יכולים להימצא בפרמטר של שאילתה, בפרמטר טופס או בכותרת HTTP.

לדוגמה, הגדרת המדיניות הבאה מגדירה את מיקום המפתח הצפוי כפרמטר של שאילתה בשם apikey. בקשה שמבוצעת בהצלחה צריכה להציג את מפתח ה-API כפרמטר של שאילתה שמצורף לבקשה, למשל ?apikey=Y7yeiuhcbKJHD790.

כדי לאמת מפתחות API, צריך ליצור את המדיניות הבאה:

<VerifyAPIKey name="APIKeyValidation">
  <APIKey ref="request.queryparam.apikey"/>
</VerifyAPIKey>

אפשר לצרף את המדיניות הזו לכל ממשק API שעליו אתם צריכים להגן.

אפשר למצוא תיעוד מקיף של המדיניות הזו בנושא ההפניה למדיניות, המדיניות בנושא אימות מפתח API.

ממשקי proxy של ה-API מעבירים באופן אוטומטי את כל כותרות ה-HTTP והפרמטרים של השאילתה שמופיעים בבקשה. לכן, אחרי שמפתח ה-API מאומת, כדאי להסיר אותו מההודעה כדי שמפתח ה-API לא יישלח באמצעות הרשת לשירות הקצה העורפי. אפשר לעשות את זה באמצעות מדיניות מסוג assignMessage באופן הבא:

<AssignMessage name="StripApiKey">
    <DisplayName>Remove Query Param</DisplayName>
    <Remove>
        <QueryParams>
            <QueryParam name="apikey"/>
        </QueryParams>
    </Remove>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"></AssignTo>
</AssignMessage>

קובץ מצורף למדיניות

יש לצרף את המדיניות לתהליך עיבוד של שרת proxy ל-API. כשמחילים את המדיניות על הבקשה PreFlow, מפתחות ה-API מאומתים בכל בקשה שמתקבלת משרת ה-API של שרת ה-proxy מאפליקציית לקוח. אחרי האימות, מפתח ה-API נמחק מהבקשה היוצאת.

עליך לצרף את המדיניות ל-ProxyEndpoint של שרת ה-API כדי להגן עליו באופן הבא:

<ProxyEndpoint name="default">
  <PreFlow>
    <Request>
      <Step><Name>APIKeyValidation</Name></Step>
      <Step><Name>StripApiKey</Name></Step>
    </Request>
  </PreFlow>

אחרי שמצרפים את המדיניות, צריך לפרוס את שרת ה-proxy של ה-API.

שליחת בקשה עם מפתח API תקין

אדמינים בארגון יכולים לאחזר את מפתח ה-API של כל אפליקציה באופן הבא:

$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password 

פרופיל האפליקציה שמוחזר עבור השיחה הזו מספק את מפתח הצרכן (מפתח API) והסוד. ערך מפתח הצרכן הוא הערך שבו השתמשת עבור מפתח ה-API בבקשה שלך לממשק ה-API המוגן.

לדוגמה, בקשה שלא כוללת מפתח API מובילה לכשל בהרשאה.

$ curl http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282

הודעת הכשל מציינת שהמדיניות חיפשה מפתח API אבל לא מצאה מפתח תקין:

OAuth Failure : Could not resolve the app key with variable request.queryparam.apikey

כשמפתח הצרכן של האפליקציה נכלל כפרמטר של שאילתה, התוצאה הצפויה היא הרשאה מוצלחת:

$ curl http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282&"apikey=PulSCqMnXGchW0pC0s5o9ngHVTWMeLqk"

התוצאה הצפויה היא תגובה מוצלחת מצד שירות מזג האוויר.

שינוי הערך של מפתח ה-API בבקשה יוביל לכשל בהרשאה:

$ curl http://{org_name}-test.apigee.net/weather?forecastrss?w=12797282&"apikey=PulSCqMnXGchW0"

תוצאות ב:

OAuth Failure : Consumer Key is Invalid

חשוב לזכור: אדמינים בארגון יכולים לאחזר את מפתח הצרכן של כל אפליקציה שרשומה בארגון:

$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password