בדף הזה מוסבר איך להוסיף תמיכה בממשק ה-API שלכם לאימות משתמשים מאפליקציות לקוח באמצעות Cloud Endpoints Frameworks. שימו לב: כרגע יש תמיכה בלקוחות Android ו-JavaScript.
Endpoints Frameworks תומך באימות משתמשים מאפליקציות לקוח שמשתמשות באחת מהמתודולוגיות הבאות:
לא משנה באיזו שיטת אימות משתמשים תשתמשו, בכל שיטת API שבה תרצו לבדוק אם האימות תקין, תצטרכו לבדוק אם יש User תקף, כמו שמתואר בקטעים הבאים:
דרישות מוקדמות
במאמר הזה אנחנו יוצאים מנקודת הנחה שכבר:
נוצר פרויקטGoogle Cloud .
- אם משתמשים ב-JWT בלקוח כדי לשלוח בקשות מאומתות ל-API, ה-JWT צריך להיות בכותרת ההרשאה של בקשת HTTP. ל-JWT צריכים להיות התביעות הנדרשות הבאות:
-
iss -
sub -
aud -
iat -
exp
-
אימות באמצעות Firebase Auth
כדי לתמוך בשיחות מלקוחות שמשתמשים ב-Firebase Auth:
מייבאים את App Engine Cloud Endpoints API בכיתת ה-API:
import endpointsמוסיפים אובייקט של מנפיק 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.
- מחליפים את
בכל שיטה של API שבה רוצים לבדוק אם האימות תקין, צריך לבדוק אם יש
Userתקין ולהפעילerror 401אם אין כזה, כמו שמוצג בהגדרת השיטה לדוגמה הזו:user = endpoints.get_current_user() # If there's no user defined, the request was unauthenticated, so we # raise 401 Unauthorized.פריסת Endpoints API. צריך לפרוס מחדש את Endpoints API בכל פעם שמוסיפים לקוחות חדשים.
הוספת אימות ב-Firebase ללקוח
אפשר להוסיף אימות של Firebase לקוד כמו שמתואר במסמכי התיעוד של Firebase. ללקוח צריך להיות Google Cloud פרויקט שמשויך אליו, ומזהה הפרויקט צריך להופיע בהגדרות של מנפיק Firebase של ה-API.
אימות באמצעות Auth0
כדי לתמוך בשיחות מלקוחות שמשתמשים ב-Auth0:
מייבאים את App Engine Endpoints API בכיתת ה-API:
import endpointsמוסיפים אובייקט של מנפיק 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 שמשמש את הלקוח.
- מחליפים את
בכל שיטה של API שבה רוצים לבדוק אם האימות תקין, צריך לבדוק אם יש
Userתקין ולהפעילerror 401אם אין כזה, כמו שמוצג בהגדרת השיטה לדוגמה הזו:user = endpoints.get_current_user() # If there's no user defined, the request was unauthenticated, so we # raise 401 Unauthorized.פורסים את ה-API. צריך לפרוס מחדש את ה-API בכל פעם שמוסיפים לקוחות חדשים.
הוספת אימות Auth0 ללקוח
אפשר להוסיף אימות של Auth0 לקוד שלכם כמו שמתואר במסמכי התיעוד של Auth0. הלקוח צריך להיות רשום בהגדרות המנפיק של Auth0 API.
אימות באמצעות אסימונים מזהים של Google
כדי לתמוך בשיחות מלקוחות שעוברים אימות באמצעות אסימונים מזהים של Google:
מקבלים מזהה לקוח של OAuth 2 לכל אפליקציית לקוח. בעל אפליקציית הלקוח צריך ליצור את מזהה הלקוח במסוף Google Cloud . הוראות מפורטות זמינות במאמר יצירת מזהי לקוח.
מייבאים את App Engine Endpoints API בכיתת ה-API:
import endpointsמציינים את כל מזהי הלקוחות שרוצים להעניק להם גישה ל-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.בכל שיטה של API שבה רוצים לבדוק אם האימות תקין, צריך לבדוק אם יש
Userתקין ולהפעילerror 401אם אין כזה, כמו שמוצג בהגדרת השיטה לדוגמה הזו:user = endpoints.get_current_user() # If there's no user defined, the request was unauthenticated, so we # raise 401 Unauthorized.פריסת Endpoints API. צריך לפרוס מחדש את Endpoints API בכל פעם שמוסיפים לקוחות חדשים.
הוספת אימות באמצעות אסימון מזהה Google ללקוח
מידע על הוספת קוד אימות ללקוחות מופיע במאמרים הבאים:
המאמרים הבאים
מידע רקע על אימות משתמשים ועל ההבדלים בינו לבין הרשאת מפתח API מופיע במאמר מתי ואיך כדאי להשתמש במפתחות API.