סקירה כללית
ב-16 בפברואר 2022, הכרזנו על תוכניות לשיפור האינטראקציה ב-Google OAuth באמצעות שימוש בתהליכי OAuth מאובטחים יותר. המדריך הזה יעזור לך להבין את השינויים הדרושים ואת השלבים שצריך לבצע כדי לעבור מהזרימה של כתובת ה-IP הלולאה החוזרת לחלופות נתמכות.
מאמץ זה הוא אמצעי מגן מפני פישינג והתקפות פישינג של אפליקציה במהלך אינטראקציות עם נקודות הקצה ל-OAuth 2.0 של Google.
מהו הזרימה של כתובת ה-IP של הלולאה החוזרת (loopback)?
תהליך כתובת ה-IP של הלולאה החוזרת תומך בשימוש בכתובת IP מסוג הלולאה החוזרת (loopback) או ב-localhost
כרכיב המארח של ה-URI של ההפניה האוטומטית, שאליו המשתמש שולח את פרטי הכניסה לאחר שהוא מאשר בקשת הסכמה ל-OAuth. תהליך זה חשוף להתקפות אדם באמצע, שבהן אפליקציה לא חוקית ניגשת לאותו ממשק הלולאה החוזרת במערכות הפעלה מסוימות, עשויה ליירט את התגובה משרת ההרשאות ל-URI הנתון של ההפניה מחדש ולקבל גישה לקוד ההרשאה.
אנחנו מוציאים משימוש את כתובת ה-IP בתהליך הלולאה החוזרת (loopback) לסוגי הלקוחות המקוריים ב-iOS, ב-Android וב-Chrome, אבל עדיין תהיה תמיכה באפליקציות למחשב.
תאריכי התאימות העיקריים
- 14 במרץ 2022 – ללקוחות OAuth חדשים אין גישה לתהליך של כתובת ה-IP של הלולאה החוזרת (loopback)
- 1 באוגוסט 2022 – יכול להיות שתוצג הודעת אזהרה מול המשתמש בבקשות OAuth שלא תואמות למדיניות
- 31 באוגוסט 2022 – התהליך של הוספת כתובת IP מסוג הלולאה החוזרת נחסם ללקוחות מקומיים ב-Android, ב-Chrome וב-iOS שנוצרו לפני 14 במרץ 2022
- 21 באוקטובר 2022 – כל הלקוחות הקיימים חסומים (כולל לקוחות פטורים)
אם משתמשים יפרו את המדיניות, תוצג להם הודעת שגיאה. ההודעה תיידע את המשתמשים שהאפליקציה חסומה בזמן שהיא מציגה את כתובת האימייל לתמיכה שמופיעה במסך ההסכמה ל-OAuth ב-Google API Console.
- לדעת אם מצב זה משפיע עליכם.
- עליך לעבור לחלופה נתמכת אם הבעיה שלך משפיעה.
כאן אפשר לקבוע אם הבעיה השפיעה עליך
בדיקת סוג מזהה הלקוח ב-OAuth
יש לעבור אל Credentials page של Google API Console ולהציג את סוג מזהה הלקוח של OAuth בקטע מזהי לקוח OAuth 2.0. היא יכולה להיות אחת מהאפשרויות הבאות: אפליקציית אינטרנט, Android, iOS , Universal Windows Platform (UWP), Chrome app, TVs and Limited Input , אפליקציה למחשב.
אם סוג הלקוח הוא Android, אפליקציית Chrome או iOS, ומשתמשים בתהליך כתובת ה-URL של הלולאה החוזרת, צריך להמשיך לשלב הבא.
אין צורך לבצע פעולות כלשהן לגבי ההוצאה משימוש אם נעשה שימוש בזרימת כתובת ה-IP של הלולאה החוזרת בלקוח OAuth של האפליקציה למחשב, כי השימוש בסוג הלקוח הזה של OAuth ימשיך לתמוך.
איך לקבוע אם האפליקציה משתמשת בתהליך כתובת ה-IP של הלולאה החוזרת (loopback)
בודקים את קוד האפליקציה או את שיחת הרשת היוצאת (אם האפליקציה משתמשת בספריית OAuth) כדי לבדוק אם בקשת ההרשאה של האפליקציה ב-Google OAuth משתמשת בערכי 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
בדיקה של השיחה היוצאת ברשת
- אפליקציית אינטרנט – בדיקת הפעילות ברשת ב-Chrome
- Android – בדיקת התנועה ברשת באמצעות הכלי לבדיקת רשתות
-
אפליקציות Chrome
- ניווט אל דף התוספים של Chrome
- מסמנים את תיבת הסימון מצב פיתוח בפינה השמאלית העליונה של דף התוסף.
- בחירת התוסף למעקב
- לוחצים על הקישור דף רקע בקטע בדיקת צפיות שבדף התוסף.
- בשלב הבא ייפתח חלון קופץ של כלים למפתחים ושם תוכלו לעקוב אחרי התנועה ברשת בכרטיסייה Network
- 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 ולטפל בכל הקריאות לנקודות הקצה של Google ל-OAuth 2.0.
קישורי התיעוד הבאים מספקים מידע על השימוש בערכות ה-SDK של Google לכניסה כדי לגשת ל-Google APIs מבלי להשתמש ב-URI הפניה לכתובת IP אחרת.
גישה לממשקי Google API ב-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 API בצד הלקוח ב-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 ל-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 באפליקציית הלקוח ב-Chrome, עליכם לעבור להשתמש ב- Chrome Identity API.
הדוגמה הבאה מראה איך להשיג את כל אנשי הקשר של המשתמש בלי להשתמש ב-URI של כתובת ה-URL להפניה אוטומטית מסוג לולאה חוזרת.
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) }); }); }); };
ב מדריך ל-Chrome Identity API מוסבר איך לגשת למשתמשים שמאמתים אותם ולקרוא לנקודות הקצה של Google באמצעות Chrome Identity API.