אימות באמצעות חשבון שירות

דרישות מוקדמות

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

הגדרת אימות

כדי לבצע אימות באמצעות חשבון שירות:

  1. מייבאים את App Engine Endpoints API בכיתת ה-API:

    import endpoints
    
  2. מוסיפים אובייקט של מנפיק לחשבון השירות אל הדקורטור של ה-API. לדוגמה:

    @endpoints.api(
        name='echo',
        version='v1',
        issuers={'serviceAccount': endpoints.Issuer(
            'YOUR_SERVICE_ACCOUNT_EMAIL',
            'https://www.googleapis.com/robot/v1/metadata/x509/YOUR_SERVICE_ACCOUNT_EMAIL')},
        audiences={'serviceAccount': ['YOUR_AUDIENCE']})
    
    • מחליפים את echo בשם ה-API.
    • מחליפים את v1 בגרסת ה-API.
    • מחליפים את YOUR_SERVICE_ACCOUNT_EMAIL בכתובת האימייל בחשבון השירות.
    • מחליפים את YOUR_AUDIENCE בערך שבשדה aud שנשלח על ידי שירות הקריאה.
  3. בכל שיטת API שבה רוצים לבדוק אם יש אימות תקין, צריך לבדוק אם יש User תקין ולהציג את השגיאה 401 אם אין כזה, כמו שמוצג בהגדרת השיטה לדוגמה הזו:

    user = endpoints.get_current_user()
    # If there's no user defined, the request was unauthenticated, so we
    # raise 401 Unauthorized.
    
  4. פורסים את ה-API. צריך לפרוס מחדש את ה-API בכל פעם שמוסיפים לקוחות חדשים.