लूपबैक आईपी पता फ़्लो माइग्रेशन गाइड

खास जानकारी

हमने 16 फ़रवरी, 2022 को एलान किया था कि हम ज़्यादा सुरक्षित OAuth फ़्लो का इस्तेमाल करके, Google OAuth इंटरैक्शन को ज़्यादा सुरक्षित बनाने जा रहे हैं. इस गाइड से, आपको ज़रूरी बदलावों को समझने और लूपबैक आईपी पते के फ़्लो से, काम करने वाले दूसरे विकल्पों पर माइग्रेट करने में मदद मिलती है.

यह कोशिश, फ़िशिंग और किसी दूसरे ऐप्लिकेशन पर होने वाले हमलों से बचाने के लिए एक उपाय है. हालांकि, ऐसा Google के OAuth 2.0 के ऑथराइज़ेशन एंडपॉइंट के साथ इंटरैक्शन के दौरान किया जाता है.

लूपबैक आईपी पता फ़्लो क्या है?

लूपबैक आईपी पता फ़्लो, रीडायरेक्ट यूआरआई के होस्ट कॉम्पोनेंट के तौर पर लूपबैक आईपी पते या localhost का इस्तेमाल करता है. हालांकि, ऐसा तब किया जाता है, जब उपयोगकर्ता के OAuth सहमति के अनुरोध को मंज़ूरी देने के बाद क्रेडेंशियल भेजे जाते हैं. इस फ़्लो में, मैन इन मिडल हमलों के जोखिम की आशंका होती है. इसमें कुछ ऑपरेटिंग सिस्टम पर एक ही लूपबैक इंटरफ़ेस का इस्तेमाल करने वाला कोई नुकसान पहुंचाने वाला ऐप्लिकेशन, ऑथराइज़ेशन सर्वर से दिए गए रीडायरेक्ट यूआरआई के रिस्पॉन्स को बीच में रोक सकता है और ऑथराइज़ेशन कोड का ऐक्सेस पा सकता है.

iOS, Android, और Chrome के OAuth क्लाइंट टाइप के लिए, लूपबैक आईपी पता फ़्लो को बंद किया जा रहा है. हालांकि, यह डेस्कटॉप ऐप्लिकेशन पर काम करता रहेगा.

मुख्य अनुपालन की तारीखें

  • 14 मार्च, 2022 - नए OAuth क्लाइंट को लूपबैक आईपी पता फ़्लो का इस्तेमाल करने से रोका गया
  • 1 अगस्त, 2022 - नीति का पालन न करने वाले OAuth अनुरोधों के लिए, उपयोगकर्ताओं को चेतावनी देने वाला मैसेज दिखाया जा सकता है
  • 31 अगस्त, 2022 - 14 मार्च, 2022 से पहले बनाए गए Android, Chrome ऐप्लिकेशन, और iOS OAuth क्लाइंट के लिए, लूपबैक आईपी पते का फ़्लो ब्लॉक कर दिया गया है
  • 21 अक्टूबर, 2022 - सभी मौजूदा क्लाइंट ब्लॉक कर दिए गए हैं. इनमें वे क्लाइंट भी शामिल हैं जिन्हें छूट मिली हुई है

नीतियों का पालन न करने वाले अनुरोधों के लिए, उपयोगकर्ताओं को दिखने वाली गड़बड़ी का मैसेज दिखाया जाएगा. Google API कंसोल में OAuth के लिए सहमति वाली स्क्रीन पर रजिस्टर किए गए सहायता ईमेल को दिखाते समय, उपयोगकर्ताओं को इस मैसेज से यह पता चलेगा कि ऐप्लिकेशन को ब्लॉक कर दिया गया है.

माइग्रेशन की प्रोसेस को पूरा करने के लिए, आपको दो मुख्य चरण पूरे करने होंगे:
  1. देखें कि क्या आप पर असर पड़ा है.
  2. अगर आपको इस समस्या का सामना करना पड़ रहा है, तो किसी ऐसे प्लैटफ़ॉर्म पर माइग्रेट करें जिस पर यह सुविधा काम करती है.

देखें कि क्या आप पर असर पड़ा है

यह देखना कि आपका OAuth क्लाइंट आईडी किस तरह का है

Google API Console के Credentials page पर जाएं और OAuth 2.0 Client-ID सेक्शन में जाकर, अपना OAuth क्लाइंट आईडी टाइप देखें. यह इनमें से कोई एक होगा: वेब ऐप्लिकेशन, Android, iOS, Universal Windows Platform (UWP), Chrome ऐप्लिकेशन, टीवी और सीमित इनपुट डिवाइस, डेस्कटॉप ऐप्लिकेशन.

अगर आपका क्लाइंट टाइप Android, Chrome ऐप्लिकेशन या iOS है और आपको लूपबैक आईपी पता फ़्लो इस्तेमाल करना है, तो अगले चरण पर जाएं.

अगर डेस्कटॉप ऐप्लिकेशन के OAuth क्लाइंट पर लूपबैक आईपी पता फ़्लो का इस्तेमाल किया जा रहा है, तो इस सुविधा के बंद होने से संबंधित कुछ भी करने की ज़रूरत नहीं है. ऐसा इसलिए है, क्योंकि इस तरह के OAuth क्लाइंट पर लूपबैक आईपी पता फ़्लो का इस्तेमाल जारी रहेगा.

यह कैसे तय करें कि आपका ऐप्लिकेशन, लूपबैक आईपी पते के फ़्लो का इस्तेमाल कर रहा है या नहीं

अपने ऐप्लिकेशन कोड की जांच करें या आउटगोइंग नेटवर्क कॉल (अगर आपका ऐप्लिकेशन OAuth लाइब्रेरी का इस्तेमाल कर रहा है) की जांच करके, यह पता लगाएं कि आपका ऐप्लिकेशन, Google OAuth के लिए ऑथराइज़ेशन अनुरोध कर रहा है या नहीं. इसके लिए, लूपबैक रीडायरेक्ट यूआरआई वैल्यू का इस्तेमाल किया जा रहा है.

अपने ऐप्लिकेशन कोड की जांच करें

अपने ऐप्लिकेशन कोड के उस सेक्शन की समीक्षा करें जहां Google OAuth ऑथराइज़ेशन एंडपॉइंट को कॉल किया जा रहा है और तय करें कि 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>

आउटगोइंग नेटवर्क कॉल की जांच करें

आपके ऐप्लिकेशन के क्लाइंट टाइप के आधार पर, नेटवर्क कॉल की जांच करने का तरीका अलग-अलग होगा.
नेटवर्क कॉल की जांच करते समय, Google OAuth ऑथराइज़ेशन एंडपॉइंट को भेजे गए अनुरोधों को देखें और तय करें कि 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)

अगर आपको यह पता चलता है कि आपका ऐप्लिकेशन, Android या iOS के OAuth क्लाइंट टाइप के साथ लूपबैक आईपी पता फ़्लो का इस्तेमाल कर रहा है, तो आपको हमारे 'Google साइन-इन' मोबाइल SDK टूल (Android, iOS) का इस्तेमाल करके माइग्रेट करना चाहिए.

SDK टूल की मदद से, Google API को आसानी से ऐक्सेस किया जा सकता है. साथ ही, यह Google के OAuth 2.0 ऑथराइज़ेशन एंडपॉइंट पर सभी कॉल को हैंडल करता है.

नीचे दिए गए दस्तावेज़ के लिंक में बताया गया है कि लूपबैक आईपी पता रीडायरेक्ट यूआरआई का इस्तेमाल किए बिना, Google API को ऐक्सेस करने के लिए 'Google साइन-इन' SDK टूल का इस्तेमाल कैसे किया जाए.

Android पर Google API ऐक्सेस करना

सर्वर-साइड (ऑफ़लाइन) ऐक्सेस
नीचे दिए गए उदाहरण में, Android पर सर्वर साइड पर Google API को ऐक्सेस करने का तरीका बताया गया है.
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 API को सर्वर साइड से ऐक्सेस करने के तरीके के बारे में जानने के लिए, सर्वर साइड ऐक्सेस गाइड देखें.

iOS ऐप्लिकेशन में Google API को ऐक्सेस करना

क्लाइंट-साइड ऐक्सेस

नीचे दिए गए उदाहरण में बताया गया है कि iOS पर क्लाइंट-साइड पर Google API को कैसे ऐक्सेस किया जाए.

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()
}

एपीआई को कॉल करने के लिए, ऐक्सेस टोकन का इस्तेमाल करें. इसके लिए, REST या gRPC अनुरोध (Authorization: Bearer ACCESS_TOKEN) के हेडर में ऐक्सेस टोकन शामिल करें या REST के लिए ऑब्जेक्ट-C के लिए Google API क्लाइंट लाइब्रेरी के साथ फ़ेचर ऑथराइज़ेशन (GTMFetcherAuthorizationProtocol) का इस्तेमाल करें.

क्लाइंट-साइड पर Google API को ऐक्सेस करने का तरीका जानने के लिए, क्लाइंट-साइड ऐक्सेस की गाइड देखें. पर जाएं.

सर्वर-साइड (ऑफ़लाइन) ऐक्सेस
नीचे दिए गए उदाहरण में, iOS क्लाइंट के साथ काम करने के लिए, सर्वर साइड पर Google API को ऐक्सेस करने का तरीका बताया गया है.
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 API को सर्वर साइड से ऐक्सेस करने के तरीके के बारे में जानने के लिए, सर्वर साइड ऐक्सेस गाइड देखें.

Chrome ऐप्लिकेशन क्लाइंट

अगर आपको यह पता चलता है कि आपका ऐप्लिकेशन, Chrome ऐप्लिकेशन क्लाइंट पर लूपबैक आईपी पते का फ़्लो इस्तेमाल कर रहा है, तो आपको Chrome Identity API का इस्तेमाल करके माइग्रेट करना चाहिए.

नीचे दिए गए उदाहरण में, लूपबैक आईपी पता रीडायरेक्ट यूआरआई का इस्तेमाल किए बिना, सभी उपयोगकर्ता संपर्कों को पाने का तरीका बताया गया है.

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 गाइड देखें.