סקירה כללית
ב-16 בפברואר 2022, הכרזנו על תוכניות להפוך את האינטראקציות של OAuth ל-Google לבטוחות יותר באמצעות תהליכי OAuth מאובטחים יותר. המדריך הזה יעזור לך להבין את השינויים והשלבים הנחוצים כדי לבצע העברה מוצלחת מהתהליך של כתובת ה-IP בלולאה חוזרת אל חלופות נתמכות.
זהו אמצעי הגנה מפני מתקפות פישינג והתחזות לאפליקציות במהלך אינטראקציות עם נקודות הקצה של הרשאות OAuth 2.0 של Google.
מהי תהליך הזרימה של כתובת IP בלולאה החוזרת (loopback)?
התהליך של כתובת ה-IP בלולאה החוזרת תומך בשימוש בכתובת IP מסוג לולאה חוזרת (loopback), או ב-localhost
כרכיב המארח של ה-URI של ההפניה האוטומטית, שאליו נשלחים פרטי הכניסה אחרי שמשתמש מאשר בקשת הסכמה ל-OAuth. התהליך הזה חשוף למתקפות מסוג man in the middle, שבהן אפליקציה זדונית שניגשת לאותו ממשק לולאה חוזרת במערכות הפעלה מסוימות, עלולה ליירט את התגובה משרת ההרשאות ל-URI של ההפניה האוטומטית ולקבל גישה לקוד ההרשאה.
התהליך של כתובת ה-IP בלולאה חוזר יוצא משימוש בסוגי הלקוחות המקוריים של OAuth, Android ו-Chrome, אבל התמיכה תמשיך להיות נתמכת באפליקציות למחשב.
תאריכי תאימות עיקריים
- 14 במרץ 2022 – ללקוחות OAuth חדשים נחסמה האפשרות להשתמש בתהליך כתובת ה-IP של הלולאה החוזרת (loopback)
- 1 באוגוסט 2022 – ייתכן שתוצג הודעת אזהרה למשתמשים בבקשות OAuth שלא עומדות בדרישות
- 31 באוגוסט 2022 – תהליך כתובת ה-IP של הלולאה החוזרת (loopback) נחסם ללקוחות מקוריים של Android, אפליקציית Chrome ו-iOS OAuth שנוצרו לפני 14 במרץ 2022
- 21 באוקטובר 2022 – כל הלקוחות הקיימים חסומים (כולל לקוחות פטורים)
אם הבקשה לא תפעל בהתאם למדיניות, תוצג הודעת שגיאה למשתמש. המשתמשים יקבלו הודעה על כך שהאפליקציה חסומה בזמן הצגת האימייל לתמיכה שרשמתם במסך ההסכמה ל-OAuth ב-Google API Console.
- בדקו אם אתם מושפעים מהמצב.
- כדאי לעבור לחלופה נתמכת אם הבעיה משפיעה עליך.
איך בודקים אם אתם מושפעים
בדיקת הסוג של מזהה הלקוח ב-OAuth
עוברים אל Credentials page של Google API Console ובודקים את הסוג של מזהה הלקוח ב-OAuth בקטע מזהי לקוח ב-OAuth 2.0. השירות יהיה אחת מהאפשרויות הבאות: אפליקציית אינטרנט, Android, iOS, פלטפורמת Universal Windows (UWP), אפליקציית Chrome, טלוויזיות ומכשירים לקליטת נתונים מוגבלים, אפליקציה למחשב.
אם סוג הלקוח שלכם הוא Android, אפליקציית Chrome או iOS, ואתם משתמשים בתהליך של כתובת ה-IP בלופ לאחור, אפשר להמשיך לשלב הבא.
אם משתמשים בתהליך של כתובת ה-IP בלולאה החוזרת בלקוח OAuth של אפליקציה למחשב, אין צורך לבצע פעולות שקשורות להוצאה משימוש של אותו סוג של לקוח OAuth.
איך לקבוע אם האפליקציה משתמשת בזרימה של כתובת IP בלולאה חוזרת
בודקים את קוד האפליקציה או את שיחת הרשת היוצאת (אם האפליקציה משתמשת בספריית OAuth) כדי לקבוע אם בקשת ההרשאה של OAuth של Google משתמשת בערכי URI של הפניה חזרה הלולאה לאחור.
בדיקת קוד האפליקציה
redirect_uri
כולל את הערכים הבאים:
-
redirect_uri=http://127.0.0.1:<port>
למשלredirect_uri=http://127.0.0.1:3000
-
redirect_uri=http://[::1]:<port>
למשלredirect_uri=http://[::1]:3000
-
redirect_uri=http://localhost:<port>
למשלredirect_uri=http://localhost:3000
https://accounts.google.com/o/oauth2/v2/auth? redirect_uri=http://localhost:3000& response_type=code& scope=<SCOPES>& state=<STATE>& client_id=<CLIENT_ID>
בדיקה של שיחה יוצאת ברשת
- אפליקציית אינטרנט – בדיקת הפעילות ברשת ב-Chrome
- Android – בדיקת התנועה ברשת באמצעות 'בודק הרשת'
-
אפליקציות ל-Chrome
- נכנסים לדף התוספים ל-Chrome.
- מסמנים את התיבה מצב פיתוח בפינה השמאלית העליונה של דף התוסף
- בחירת התוסף שברצונך לעקוב אחריו
- לוחצים על הקישור לדף הרקע בקטע בדיקת תצוגות של דף התוסף
- ייפתח חלון קופץ של כלים למפתחים שבו אפשר לעקוב אחר התנועה ברשת בכרטיסייה 'רשת'
- iOS – ניתוח תנועת HTTP באמצעות כלים
- Universal Windows Platform (UWP) – בדיקת התנועה ברשת ב-Visual Studio
- אפליקציות למחשב - משתמשים בכלי לתיעוד רשת שזמין למערכת ההפעלה שעבורה פותחה האפליקציה.
redirect_uri
כולל את הערכים הבאים:
-
redirect_uri=http://127.0.0.1:<port>
למשלredirect_uri=http://127.0.0.1:3000
-
redirect_uri=http://[::1]:<port>
למשלredirect_uri=http://[::1]:3000
-
redirect_uri=http://localhost:<port>
למשלredirect_uri=http://localhost:3000
https://accounts.google.com/o/oauth2/v2/auth? redirect_uri=http://localhost:3000& response_type=code& scope=<SCOPES>& state=<STATE>& client_id=<CLIENT_ID>
העברה לחלופה נתמכת
לקוחות בנייד (Android / iOS)
אם גילית שהאפליקציה שלך משתמשת בתהליך של כתובת IP בלולאה (loopback) מסוג לקוח OAuth ל-Android או ל-iOS, עליך לעבור להשתמש בערכות ה-SDK לנייד לכניסה באמצעות חשבון Google (Android, iOS).
באמצעות ה-SDK קל לגשת ל-Google APIs ומטפל בכל הקריאות לנקודות הקצה (endpoints) של הרשאות OAuth 2.0 של Google.
בקישורים של התיעוד שבהמשך מוסבר איך להשתמש בערכות ה-SDK לכניסה באמצעות חשבון Google כדי לגשת ל-Google APIs בלי להשתמש ב-URI להפניה אוטומטית לכתובת IP בלופ לאחור.
גישה ל-Google APIs ב-Android
גישה מצד השרת (אופליין)
הדוגמה הבאה ממחישה איך נכנסים ל-Google APIs בצד השרת ב-Android.Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data); try { GoogleSignInAccount account = task.getResult(ApiException.class); // request a one-time authorization code that your server exchanges for an // access token and sometimes refresh token String authCode = account.getServerAuthCode(); // Show signed-in UI updateUI(account); // TODO(developer): send code to server and exchange for access/refresh/ID tokens } catch (ApiException e) { Log.w(TAG, "Sign-in failed", e); updateUI(null); }
במדריך לגישה בצד השרת מוסבר איך לגשת ל-Google APIs מהצד של השרת.
גישה ל-Google APIs באפליקציה ל-iOS
גישה מצד הלקוח
הדוגמה הבאה ממחישה איך לגשת ל-Google APIs בצד הלקוח ב-iOS.
user.authentication.do { authentication, error in guard error == nil else { return } guard let authentication = authentication else { return } // Get the access token to attach it to a REST or gRPC request. let accessToken = authentication.accessToken // Or, get an object that conforms to GTMFetcherAuthorizationProtocol for // use with GTMAppAuth and the Google APIs client library. let authorizer = authentication.fetcherAuthorizer() }
משתמשים באסימון הגישה כדי להפעיל את ה-API. לשם כך, צריך לכלול את אסימון הגישה בכותרת של בקשת REST או gRPC (Authorization: Bearer ACCESS_TOKEN
)
או להשתמש בהרשאת האחזור (GTMFetcherAuthorizationProtocol
) עם
ספריית הלקוח של Google APIs עבור Objective-C for REST.
במדריך לגישה מצד הלקוח מוסבר איך ניגשים ל-Google APIs בצד הלקוח. לגבי אופן הגישה ל-Google APIs בצד הלקוח.
גישה מצד השרת (אופליין)
הדוגמה הבאה ממחישה איך לגשת ל-Google APIs בצד השרת כדי לתמוך בלקוח iOS.GIDSignIn.sharedInstance.signIn(with: signInConfig, presenting: self) { user, error in guard error == nil else { return } guard let user = user else { return } // request a one-time authorization code that your server exchanges for // an access token and refresh token let authCode = user.serverAuthCode }
במדריך לגישה בצד השרת מוסבר איך לגשת ל-Google APIs מהצד של השרת.
לקוח אפליקציית Chrome
אם גילית שהאפליקציה שלך משתמשת בתהליך של כתובת ה-IP בלולאה החוזרת (loopback) בלקוח של אפליקציית Chrome, עליך לעבור לשימוש ב- Chrome Identity API.
הדוגמה הבאה מראה איך להשיג את כל אנשי הקשר של המשתמשים בלי להשתמש ב-URI להפניה אוטומטית של כתובת IP בלולאה חוזרת.
window.onload = function() { document.querySelector('button').addEventListener('click', function() { // retrieve access token chrome.identity.getAuthToken({interactive: true}, function(token) { // .......... // the example below shows how to use a retrieved access token with an appropriate scope // to call the Google People API contactGroups.get endpoint fetch( 'https://people.googleapis.com/v1/contactGroups/all?maxMembers=20&key=API_KEY', init) .then((response) => response.json()) .then(function(data) { console.log(data) }); }); }); };
מידע נוסף על גישה לאימות משתמשים והפעלת נקודות קצה של Google באמצעות Chrome Identity API זמין במדריך ל-Chrome Identity API.