אימות משתמשים

בדף הזה מוסבר איך להוסיף תמיכה בממשק ה-API שלכם לאימות משתמשים מאפליקציות לקוח באמצעות Cloud Endpoints Frameworks. שימו לב: כרגע יש תמיכה בלקוחות Android ו-JavaScript.

‫Endpoints Frameworks תומך באימות משתמשים מאפליקציות לקוח שמשתמשות באחת מהמתודולוגיות הבאות:

לא משנה באיזו שיטת אימות משתמשים תשתמשו, בכל שיטת API שבה תרצו לבדוק אם האימות תקין, תצטרכו לבדוק אם יש User תקף, כמו שמתואר בקטעים הבאים:

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

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

  • נוצר פרויקטGoogle Cloud .

  • הוספנו ניהול API.

  • אם משתמשים ב-JWT בלקוח כדי לשלוח בקשות מאומתות ל-API, ה-JWT צריך להיות בכותרת ההרשאה של בקשת HTTP. ל-JWT צריכים להיות התביעות הנדרשות הבאות:

    • iss
    • sub
    • aud
    • iat
    • exp

אימות באמצעות Firebase Auth

כדי לתמוך בשיחות מלקוחות שמשתמשים ב-Firebase Auth:

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

    import endpoints
    
  2. מוסיפים אובייקט של מנפיק Firebase לכל לקוח למעצב ה-API. לדוגמה:

    @endpoints.api(
        name='YOUR_API_NAME',
        version='VERSION_NUMBER',
        issuers={'firebase': endpoints.Issuer(
            'https://securetoken.google.com/YOUR_PROJECT_ID,
            'https://www.googleapis.com/service_accounts/v1/metadata/x509/securetoken@system.gserviceaccount.com')})
    
    • מחליפים את YOUR_API_NAME בשם ה-API.
    • מחליפים את VERSION_NUMBER בגרסת ה-API, לדוגמה, v1.
    • מחליפים את code>YOUR_PROJECT_ID במזהה הפרויקט של הלקוח ב- Google Cloud.
  3. בכל שיטה של API שבה רוצים לבדוק אם האימות תקין, צריך לבדוק אם יש User תקין ולהפעיל error 401 אם אין כזה, כמו שמוצג בהגדרת השיטה לדוגמה הזו:

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

הוספת אימות ב-Firebase ללקוח

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

אימות באמצעות Auth0

כדי לתמוך בשיחות מלקוחות שמשתמשים ב-Auth0:

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

    import endpoints
    
  2. מוסיפים אובייקט של מנפיק Auth0 לכל לקוח אל מעצב ה-API. לדוגמה:

    @endpoints.api(
        name='YOUR_API_NAME',
        version='VERSION_NUMBER',
        issuers={'auth0': endpoints.Issuer(
            'https://YOUR_ACCOUNT_NAME.auth0.com',
            'https://YOUR_ACCOUNT_NAME.auth0.com/.well-known/jwks.json')})
    
    • מחליפים את YOUR_API_NAME בשם ה-API.
    • מחליפים את VERSION_NUMBER בגרסת ה-API, לדוגמה, v1.
    • מחליפים את YOUR_ACCOUNT_NAME בשם של חשבון Auth0 שמשמש את הלקוח.
  3. בכל שיטה של API שבה רוצים לבדוק אם האימות תקין, צריך לבדוק אם יש User תקין ולהפעיל error 401 אם אין כזה, כמו שמוצג בהגדרת השיטה לדוגמה הזו:

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

הוספת אימות Auth0 ללקוח

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

אימות באמצעות אסימונים מזהים של Google

כדי לתמוך בשיחות מלקוחות שעוברים אימות באמצעות אסימונים מזהים של Google:

  1. מקבלים מזהה לקוח של OAuth 2 לכל אפליקציית לקוח. בעל אפליקציית הלקוח צריך ליצור את מזהה הלקוח במסוף Google Cloud . הוראות מפורטות זמינות במאמר יצירת מזהי לקוח.

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

    import endpoints
    
  3. מציינים את כל מזהי הלקוחות שרוצים להעניק להם גישה ל-API בשדה allowed_client_ids, ומציינים גם מזהי לקוחות ששייכים ללקוחות Android בשדה audiences בכלי לקישוט API. לדוגמה:

    @endpoints.api(
        name='YOUR_API_NAME',
        version='VERSION_NUMBER',
        allowed_client_ids=ALLOWED_CLIENT_IDS,
        audiences=[ANDROID_AUDIENCE])
    class AuthedGreetingApi(remote.Service):
        # ...
    

    מחליפים את ALLOWED_CLIENT_IDS ברשימה של מזהי לקוחות OAuth 2.0 שנוצרו מכל פרויקט של לקוח, ומחליפים את ANDROID_AUDIENCE ברשימה של מזהי לקוחות אינטרנט של Android. מזהה הלקוח לאתר הוא מזהה הלקוח עם התוספת .apps.googleusercontent.com, לדוגמה: YOUR_CLIENT_ID.apps.googleusercontent.com.

  4. בכל שיטה של API שבה רוצים לבדוק אם האימות תקין, צריך לבדוק אם יש User תקין ולהפעיל error 401 אם אין כזה, כמו שמוצג בהגדרת השיטה לדוגמה הזו:

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

הוספת אימות באמצעות אסימון מזהה Google ללקוח

מידע על הוספת קוד אימות ללקוחות מופיע במאמרים הבאים:

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

מידע רקע על אימות משתמשים ועל ההבדלים בינו לבין הרשאת מפתח API מופיע במאמר מתי ואיך כדאי להשתמש במפתחות API.