הגבלת הגישה ל-API באמצעות מפתחות API

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

אם הגדרתם דרישה למפתח API ב-API שלכם, בקשות לשיטה, למחלקה או ל-API המוגנים יידחו אלא אם הן כוללות מפתח שנוצר בפרויקט שלכם או בפרויקטים אחרים ששייכים למפתחים שהענקתם להם גישה להפעלת ה-API. הפרויקט שבו נוצר מפתח ה-API לא מתועד ולא מתווסף לכותרת הבקשה. עם זאת, אפשר לראות את הפרויקט שאליו משויך לקוח בדף Endpoints Services, כפי שמתואר במאמר סינון לפי פרויקט צרכן ספציפי. Google Cloud

מידע על הפרויקט שבו צריך ליצור מפתח API זמין במאמר בנושא שיתוף ממשקי API שמוגנים באמצעות מפתח API. Google Cloud

הגבלת הגישה לכל שיטות ה-API

כדי לדרוש מפתח API לכל הקריאות ל-API, מוסיפים api_key_required=True למעצב ה-API. לדוגמה:

@endpoints.api(name='echo', version='v1', api_key_required=True)
class EchoApi(remote.Service):
#...

הגבלת הגישה לשיטות ספציפיות של API

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

endpoints.method(
  # This method takes an Echo message.
  ECHO_RESOURCE,
  # This method returns an Echo message.
  EchoResponse,
  path='echo',
  http_method='POST',
  name='echo_api_key',
  api_key_required=True)
def echo_api_key(self, request):
  output_content = '\n'.join([request.content] * request.n)
  return EchoResponse(content=output_content)

הסרת הגבלה של מפתח API משיטה

כדי להשבית את האימות של מפתח API עבור API או method של API, מסירים את api_key_required=True (Python) או את apiKeyRequired = AnnotationBoolean.TRUE (Java) מהדקורטור או מההערה של ה-API או ה-method. ואז צריך לבצע קומפילציה מחדש ולפרוס מחדש.

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

אם API או שיטת API דורשים מפתח API, צריך לספק את המפתח באמצעות פרמטר שאילתה בשם key, כמו בדוגמה הזו של cURL:

curl \
    -H "Content-Type: application/json" \
    -X POST \
    -d '{"message": "echo"}' \
    "${HOST}/_ah/api/echo/v1/echo_api_key?key=${API_KEY}"

כאשר HOST ו-API_KEY הם משתנים שמכילים את שם המארח של ה-API ומפתח ה-API, בהתאמה. מחליפים את echo בשם ה-API ואת v1 בגרסת ה-API.

שיתוף ממשקי API שמוגנים באמצעות מפתח API

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

  • האם אתם צריכים להבחין בין המתקשרים לממשק ה-API כדי שתוכלו להשתמש בתכונות של Endpoints כמו מכסות?
  • האם לכל מי שמתקשר עם ה-API יש פרויקט משלו ב- Google Cloud ?
  • צריך להגדיר הגבלות שונות על מפתחות API?

עץ ההחלטות הבא יעזור לכם להחליט באיזה פרויקט ליצור את מפתח ה-API. Google Cloud

עץ החלטות בנושא מפתחות API

אישור הרשאה להפעלת ה-API

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

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

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

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

ליצור Google Cloud פרויקט נפרד לכל מתקשר

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

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

כדי ליצור Google Cloud פרויקט ומפתח API נפרדים לכל מתקשר:

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

יצירת מפתח API לכל מתקשר

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

כדי ליצור מפתח API לכל קורא באותו פרויקט:

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

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

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

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

המאמרים הבאים