אבטחת API באמצעות דרישה למפתחות API

מוצג המסמך של Apigee Edge.
עוברים אל מסמכי תיעוד של Apigee X.
מידע

מה תלמדו

במדריך הזה תלמדו:

  • ליצור שרת proxy ל-API שדורש מפתח API.
  • צריך להוסיף מוצר של API.
  • הוספת מפתח ורישום אפליקציה.
  • שליחת קריאה ל-API באמצעות מפתח API.

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

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

  • תקינה
  • המסמך לא בוטל
  • תואם למפתח ה-API של מוצר ה-API שחושף את הבקשה משאבים

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

במדריך הזה תלמדו איך ליצור שרת proxy ל-API שדורש API תקין כדי לגשת אליו.

למה תזדקק?

  • חשבון Apigee Edge. אם עדיין אין לכם חשבון, אפשר להירשם עם המסלול ב- יצירת חשבון ב-Apigee Edge.
  • דפדפן אינטרנט כדי לבצע קריאה ל-API.
  • (לא חובה בסעיף 'קרדיט נוסף') cURL מותקן ב- את המחשב שלך כדי לבצע קריאות ל-API משורת הפקודה.

יצירת שרת proxy ל-API

מידע על 'mocktarget'

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

http://mocktarget.apigee.net

היעד מחזיר Hello, Guest!. משתמשים ב /help מקור מידע לקבלת דף עזרה עם משאבי API אחרים

  1. המשך אל https://apigee.com/edge ונכנסים לחשבון.
  2. כדי לעבור לארגון הרצוי, לוחצים על שם המשתמש העליון של סרגל הניווט הצדדי כדי להציג את התפריט של פרופיל המשתמש, ואז בוחרים את הארגון מהרשימה.

    בחירת הארגון בתפריט של פרופיל המשתמש
  3. לוחצים על API proxy בדף הנחיתה כדי להציג את ה-API. רשימה של שרתי proxy.

    תפריט ממשקי API של Edge
  4. לוחצים על + Proxy.
    לחצן ליצירת שרת proxy
  5. בדף יצירת שרת Proxy, בוחרים באפשרות שרת Proxy הפוך (הנפוץ ביותר).
  6. בדף Proxy Details, מגדירים את שרת ה-Proxy באופן הבא:
    בשדה הזה לעשות את זה
    שם שרת ה-proxy כניסה: helloworld_apikey
    נתיב בסיס הפרויקט

    שינוי ל: /helloapikey

    נתיב הבסיס של הפרויקט הוא חלק מכתובת ה-URL ששימשה ליצירת בקשות לשרת ה-proxy של ה-API.

    הערה: להמלצות של Apigee לגבי ניהול גרסאות של API, ראה ניהול גרסאות ב-Web API Design: The missing קישור ספר דיגיטלי.

    API קיים

    כניסה: http://mocktarget.apigee.net

    ההגדרה הזו מגדירה את כתובת אתר היעד ש-Apigee Edge מפעיל לשרת ה-proxy ל-API.

    תיאור כניסה: hello world protected by API key
  7. לוחצים על הבא.
  8. בדף CommonPolicy (מדיניות משותפת), בקטע אבטחה: Authorization (הרשאה) בוחרים באפשרות API Key (מפתח API) ולוחצים על Next (הבא). הזה יוסיף שני כללי מדיניות לשרת ה-proxy של ה-API.
  9. בדף מארחים וירטואליים, בוחרים באפשרות ברירת מחדל secure ואז לוחצים על Next. אם בוחרים באפשרות ברירת המחדל, כדי לשלוח קריאה ל-API באמצעות http://. בחירה באפשרות מאובטח, מאפשרת לקרוא ל-API באמצעות https://.
  10. בדף Summary, מוודאים שהפריסה הבדיקה מתבצעת הסביבה מסומנת ואז לוחצים על Create and Deploy (יצירה ופריסה).
  11. יופיע אישור על כך ששרת ה-Proxy החדש ל-API וממשק ה-API נוצר בהצלחה, ושרת ה-proxy של ה-API נפרס את סביבת הבדיקה.
  12. לוחצים על עריכת שרת proxy כדי להציג את הדף סקירה כללית של שרת proxy ל-API.

הצגת המדיניות

  1. בעורך ה-Proxy ל-API, לוחצים על הכרטיסייה פיתוח. עכשיו אפשר לראות נוספו שני כללי מדיניות לזרימת הבקשה של שרת ה-proxy ל-API:
    • אימות מפתח API: בודק את הקריאה ל-API כדי לוודא קיים מפתח API (נשלח כפרמטר של שאילתה).
    • הסרת ה-apikey של פרמטר השאילתה: מדיניות AssignMessage מסירה את מפתח ה-API אחרי שהוא מסומן כדי שלא יעבור והם נחשפים שלא לצורך.
  2. לוחצים על סמל המדיניות לאימות מפתח API בתצוגת הזרימה, ומעיינים הגדרת ה-XML של המדיניות בתצוגת הקוד התחתונה. הרכיב <APIKey> מציין למדיניות לאן הוא צריך לחפש את מפתח ה-API כשהקריאה מתבצעת. כברירת מחדל, הוא מחפש את בתור פרמטר של שאילתה שנקרא apikey ב-HTTP בקשה:

    <APIKey ref="request.queryparam.apikey" />
    

    השם apikey שרירותי ויכול להיות כל נכס שמכיל את מפתח ה-API.

אפשר לנסות לשלוח קריאה ל-API

בשלב הזה תבצעו קריאה מוצלחת ל-API ישירות אל היעד מבצעים קריאה לא מוצלחת ל-Proxy ל-API כדי לבדוק הוא מוגן במסגרת המדיניות.

  1. הצלחה

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

    http://mocktarget.apigee.net
    

    התשובה אמורה להתקבל בהצלחה: Hello, Guest!

  2. כשל

    עכשיו מנסים לקרוא לשרת ה-proxy ל-API:

    http://ORG_NAME-test.apigee.net/helloapikey
    

    המערכת מחליפה את ORG_NAME בשם של ארגון קצה.

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

    {"fault":{"faultstring":"Failed to resolve API Key variable request.queryparam.apikey","detail":{"errorcode":"steps.oauth.v2.FailedToResolveAPIKey"}}}
    

    כלומר, נכון שלא העברתם מפתח API תקף (כמו פרמטר של שאילתה).

בשלבים הבאים צריך להוסיף מוצר API.

הוספת מוצר של API

כדי להוסיף מוצר API באמצעות ממשק המשתמש של Apigee:

  1. בוחרים באפשרות פרסום > מוצרי API.
  2. לוחצים על +מוצר API.
  3. מזינים את פרטי המוצר של מוצר ה-API.

    שדה תיאור
    שם שם פנימי של מוצר ה-API. לא מומלץ לציין תווים מיוחדים בשם.
    הערה: את לא יכול לערוך את השם לאחר יצירה של מוצר ה-API. עבור לדוגמה, helloworld_apikey-Product.
    השם המוצג השם המוצג של מוצר ה-API. השם המוצג נמצא בשימוש ב- בממשק המשתמש ותוכלו לערוך אותו בכל שלב. אם לא צוין אחרת, המערכת תשתמש בערך השם. השדה הזה מאוכלס באופן אוטומטי באמצעות ערך שם; אפשר לערוך או למחוק את התוכן שלו. המסך יכול לכלול תווים מיוחדים. לדוגמה, helloworld_apikey-Product
    תיאור תיאור של מוצר ה-API. לדוגמה, Test product for tutorial.
    סביבה סביבות שאליהן מוצר ה-API יאפשר גישה. לדוגמה, test או prod.
    גישה בוחרים באפשרות גלוי לכולם.
    אישור אוטומטי של בקשות גישה הפעלת אישור אוטומטי של בקשות עיקריות ל-API הזה מכל אפליקציה.
    מכסה התעלמות מהצגת המדריך הזה.
    היקפי הרשאות OAuth מותרים התעלמות מהצגת המדריך הזה.
  4. בקטע 'משאבי API', בוחרים את שרת ה-proxy ל-API שרוצים להוסיף נוצר. לדוגמה, helloworld_apikey.
  5. לוחצים על הוספה.
  6. בקטע נתיבים, מוסיפים את הנתיב '/'.
  7. לוחצים על הוספה.
  8. לוחצים על שמירה.

בשלבים הבאים מקבלים את מפתח ה-API הנדרש.

הוספת מפתח ואפליקציה אל ארגון

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

יצירת מפתח

כדי ליצור מפתח:

  1. בוחרים באפשרות פרסום > מפתחים בתפריט.
  2. לוחצים על + Developer.
  3. מזינים את הפקודה הבאה בחלון 'מפתח חדש':

    בשדה הזה Enter
    שם פרטי Keyser
    שם משפחה Soze
    שם משתמש keyser
    אימייל keyser@example.com
  4. לוחצים על יצירה.

רישום אפליקציה

כדי לרשום אפליקציה למפתחים:

  1. בוחרים באפשרות פרסום > אפליקציות.
  2. לוחצים על + אפליקציה.
  3. בחלון אפליקציה חדשה, מזינים את הפקודה הבאה:

    p
    בשדה הזה לעשות את זה
    שם ושם תצוגה כניסה: keyser_app
    חברה / מפתח בחירה: Developer
    למפתחים בחירה: Keyser Soze (keyser@example.com)
    כתובת URL לקריאה חוזרת (callback) והערות להשאיר ריק
  4. בקטע Credentials, בוחרים אף פעם התפריט Expiry (תאריך תפוגה). פרטי הכניסה לאפליקציה הזו לא יפוגו אף פעם.
  5. בקטע מוצרים, לוחצים על הוספת מוצר.
  6. בוחרים באפשרות helloworld_apikey-Product.
  7. לוחצים על הוספה.
  8. לוחצים על יצירה מעל ומשמאל לפרטי האפליקציה. כדי לשמור את העבודה שלך.

קבלת מפתח ה-API

כדי למצוא את מפתח ה-API:

  1. בדף אפליקציות (פרסום > אפליקציות), לוחצים על keyser_app.
  2. בדף keyser_app, לוחצים על Show (הצגה) לצד Key (מפתח). בקטע Credentials. בקטע Product, שימו לב שהמפתח משויך ל-helloworld_apikey

    הקצר הזה. התשובות שלך יעזרו לנו להשתפר.
  3. לוחצים על המפתח ומעתיקים אותו. משתמשים בה בשלב הבא.

קריאה ל-API באמצעות מפתח

עכשיו, אחרי שיש לכם מפתח API, אתם יכולים להשתמש בו כדי לשלוח קריאה לשרת ה-proxy ל-API. אישור בדפדפן האינטרנט שלך. מחליפים את שם הארגון ב-Edge עבור ORG_NAME, ומפתח ה-API של API_KEY למטה. צריך לוודא שאין רווחים מיותרים בפרמטר השאילתה.

http://ORG_NAME-test.apigee.net/helloapikey?apikey=API_KEY

עכשיו, כשתבצעו קריאה לשרת ה-proxy ל-API, אתם אמורים לקבל את התשובה הבאה: Hello, Guest!

מעולה! יצרת שרת proxy ל-API והגנת עליו באמצעות דרישה לכלול מפתח API חוקי בקריאה.

לתשומת ליבכם: באופן כללי לא מומלץ להעביר מפתח API פרמטר של שאילתה. כדאי לך לשקול להעביר אותה בכותרת ה-HTTP במקום זאת.

שיטה מומלצת: העברת המפתח בכותרת ה-HTTP

בשלב הזה צריך לשנות את שרת ה-proxy כדי לחפש את מפתח ה-API כותרת שנקראת x-apikey.

  1. עורכים את ה-Proxy ל-API. בוחרים באפשרות פיתוח > ממשקי proxy ל-API > helloworld_apikey, ועוברים לתצוגה Develop.
  2. בוחרים במדיניות אימות מפתח API ומשנים את ה-XML של המדיניות כך: את המדיניות לבדוק בheader ולא queryparam:

    <APIKey ref="request.header.x-apikey"/>
    
  3. שומרים את שרת ה-proxy של ה-API כדי לפרוס את השינוי.
  4. מבצעים את הקריאה הבאה ל-API באמצעות cURL כדי להעביר את מפתח ה-API בתור כותרת שנקראת x-apikey. אל תשכחו להחליף את שם הארגון.

    curl -v -H "x-apikey: API_KEY" http://ORG_NAME-test.apigee.net/helloapikey
    

לתשומת ליבך: כדי להשלים את השינוי, צריך גם להגדיר את כדי להסיר את הכותרת במקום את פרמטר השאילתה, יש להשתמש במדיניות AssignMessage. לדוגמה:

<Remove>
<Headers>
    <Header name="x-apikey"/>
</Headers>
</Remove>

נושאים קשורים

הנה כמה נושאים שקשורים ישירות למדריך הזה:

יותר לעומק, הגנה על ממשקי API באמצעות מפתחות API היא רק חלק מהסיפור. לעיתים קרובות, ההגנה על ממשקי API כוללת אבטחה נוספת, כמו OAuth.

OAuth הוא פרוטוקול פתוח אשר, בקיצור, מחליף פרטי כניסה (כגון שם משתמש וסיסמה) אסימוני גישה. אסימוני גישה הם מחרוזות אקראיות וארוכות שאפשר להעביר סביב הודעה של צינור עיבוד נתונים, גם מאפליקציה לאפליקציה, בלי לפגוע בפרטי הכניסה המקוריים. בעלי הרשאת גישה לאסימונים יש בדרך כלל תוחלת חיים קצרה, ולכן הם תמיד נוצרים.