7

प्रारंभ ~ 2wks पहले कुछ ग्राहकों ने एक ऐसी समस्या को मारना शुरू कर दिया है जो उन्हें Google सेवाओं के साथ प्रमाणीकरण से रोकता है। अब तक जिन सभी उदाहरणों का सामना करना पड़ा है वे गैर-जीमेल डोमेन पर दिखाई देते हैं। यह मुद्दा प्रतीत होता है (नीचे अंतर खंड देखें) https://accounts.google.com/o/oauth2/auth gapi.auth.authorize से अनुरोध इन विशेष ग्राहकों के लिए 'एक्स-फ़्रेम-विकल्प: सैमोरिजिन' शीर्षलेख के साथ प्रतिक्रिया लौटा रहा है। मैं स्थानीय रूप से इस मुद्दे को पुन: उत्पन्न करने में असमर्थ रहा हूं, लेकिन असफल अनुरोध का एक एचएआर दिया गया था।Google OAuth gapi.auth.A- एक्स-फ्रेम-विकल्प अधिकृत करें: SAMEORIGIN

यह वही प्रमाणीकरण विधि अन्य होस्ट किए गए डोमेन (गैर- @ जीमेल खाते) सहित कई अन्य ग्राहकों के लिए अच्छी तरह से काम कर रही है।

इस अनुरोध को विफल करने के कारण क्या हो सकता है पर कोई विचार? जांच करने या अतिरिक्त जानकारी के लिए और चीजें?

डेवलपर कंसोल https://www.moo.do में एक वैध जावास्क्रिप्ट उत्पत्ति है।

आखिरकार उपयोगकर्ता के कंसोल में प्रदर्शित त्रुटि: एक्स-फ्रेम-विकल्प: https://accounts.google.com/o/oauth2/auth द्वारा अस्वीकृत लोड? क्रॉस-मूल फ़्रेमिंग की अनुमति नहीं देता है।

समानताएँ

    इन अनुरोधों की
  • दोनों का उपयोग तत्काल = सच है जब प्राधिकृत करने। तत्काल = झूठी (जो खाता चयनकर्ता पॉपअप के माध्यम से जाने का अनुरोध करता है) का उपयोग करते समय विफलता खाता सफलतापूर्वक अनुरोध करता है)।

मतभेद

  • विफलता के जवाब में खाता एक एक्स फ़्रेम-विकल्पों हैडर है।
  • विफलता खाते की प्रतिक्रिया में प्रतिक्रिया.content.size फ़ील्ड 0 है। इसके अतिरिक्त प्रतिक्रिया._transfer आकार 0 है और एक प्रतिक्रिया है ._error फ़ील्ड मौजूद है (इसकी खाली)।
  • विफलता खाते की प्रतिक्रिया में स्कॉप्स परम को '[स्कोप] + [स्कोप] + [स्कोप]' के रूप में एन्कोड किया गया है जिसे हटा दिया गया है। [संपादित करें: एक और एचएआर प्राप्त हुआ जो ठीक से गैर-बहिष्कृत स्थान से अलग स्कॉप्स का उपयोग करता है जो अभी भी विफल रहता है]

नीचे एक सफल और असफल अनुरोध है। मुझे नुकसान हुआ है कि क्यों विफल अनुरोध अतिरिक्त शीर्षलेख लौटा रहा है। कुछ जानकारी हटा दी गई है ([हटाया गया]) या फिर से (XXXX/YYYY) redacted।

सफल अनुरोध

{ 
    "startedDateTime": "2016-03-03T15:52:27.625Z", 
    "time": 84.7660000436008, 
    "request": { 
    "method": "GET", 
    "url": "https://accounts.google.com/o/oauth2/auth?client_id=597847337936.apps.googleusercontent.com&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.install%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.appdata%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcontacts.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fgmail.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.metadata.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&immediate=true&login_hint=YYYYY%40YYYY.com&authuser=-1&include_granted_scopes=true&proxy=oauth2relay593501023&redirect_uri=postmessage&origin=https%3A%2F%2Fwww.moo.do&response_type=token&state=867674703%7C0.1520984533&jsh=m%3B%2F_%2Fscs%2Fapps-static%2F_%2Fjs%2Fk%3Doz.gapi.en.d1w1l2mcNcs.O%2Fm%3D__features__%2Fam%3DAQ%2Frt%3Dj%2Fd%3D1%2Frs%3DAGLTcCMuer-UxvQzEv7JYzkFSQh2Kou7xA", 
    "httpVersion": "unknown", 
    "headers": [ 
     { 
     "name": "pragma", 
     "value": "no-cache" 
     }, 
     { 
     "name": "accept-encoding", 
     "value": "gzip, deflate, sdch" 
     }, 
     { 
     "name": "accept-language", 
     "value": "en-US,en;q=0.8" 
     }, 
     { 
     "name": "upgrade-insecure-requests", 
     "value": "1" 
     }, 
     { 
     "name": "user-agent", 
     "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36" 
     }, 
     { 
     "name": "accept", 
     "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" 
     }, 
     { 
     "name": "cache-control", 
     "value": "no-cache" 
     }, 
     { 
     "name": ":authority", 
     "value": "accounts.google.com" 
     }, 
     { 
     "name": "cookie", 
     "value": [REMOVED] 
     }, 
     { 
     "name": ":scheme", 
     "value": "https" 
     }, 
     { 
     "name": "x-chrome-connected", 
     "value": "id=108229145437218213687,mode=0,enable_account_consistency=false" 
     }, 
     { 
     "name": "referer", 
     "value": "https://www.moo.do/app/" 
     }, 
     { 
     "name": "x-client-data", 
     "value": "CKO2yQEIwbbJAQj9lcoB" 
     }, 
     { 
     "name": ":method", 
     "value": "GET" 
     } 
    ], 
    "queryString": [ 
     { 
     "name": "client_id", 
     "value": "597847337936.apps.googleusercontent.com" 
     }, 
     { 
     "name": "scope", 
     "value": "https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.install%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.appdata%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcontacts.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fgmail.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.metadata.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive" 
     }, 
     { 
     "name": "immediate", 
     "value": "true" 
     }, 
     { 
     "name": "login_hint", 
     "value": "YYYYY%40YYYY.com" 
     }, 
     { 
     "name": "authuser", 
     "value": "-1" 
     }, 
     { 
     "name": "include_granted_scopes", 
     "value": "true" 
     }, 
     { 
     "name": "proxy", 
     "value": "oauth2relay593501023" 
     }, 
     { 
     "name": "redirect_uri", 
     "value": "postmessage" 
     }, 
     { 
     "name": "origin", 
     "value": "https%3A%2F%2Fwww.moo.do" 
     }, 
     { 
     "name": "response_type", 
     "value": "token" 
     }, 
     { 
     "name": "state", 
     "value": "867674703%7C0.1520984533" 
     }, 
     { 
     "name": "jsh", 
     "value": "m%3B%2F_%2Fscs%2Fapps-static%2F_%2Fjs%2Fk%3Doz.gapi.en.d1w1l2mcMcs.O%2Fm%3D__features__%2Fam%3DAQ%2Frt%3Dj%2Fd%3D1%2Frs%3DAGLTcCMuer-UxvQzEv7JYzkFSQh2Kou7xA" 
     } 
    ], 
    "cookies": [ 
     { 
     "name": "LSOLH", 
     "value": [REMOVED], 
     "expires": null, 
     "httpOnly": false, 
     "secure": false 
     }, 
     { 
     "name": "SMSV", 
     "value": [REMOVED], 
     "expires": null, 
     "httpOnly": false, 
     "secure": false 
     }, 
     { 
     "name": "RMME", 
     "value": "false", 
     "expires": null, 
     "httpOnly": false, 
     "secure": false 
     }, 
     { 
     "name": "ACCOUNT_CHOOSER", 
     "value": [REMOVED], 
     "expires": null, 
     "httpOnly": false, 
     "secure": false 
     }, 
     { 
     "name": "GALX", 
     "value": [REMOVED], 
     "expires": null, 
     "httpOnly": false, 
     "secure": false 
     }, 
     { 
     "name": "GoogleAccountsLocale_session", 
     "value": "en", 
     "expires": null, 
     "httpOnly": false, 
     "secure": false 
     }, 
     { 
     "name": "expor", 
     "value": "3100077", 
     "expires": null, 
     "httpOnly": false, 
     "secure": false 
     }, 
     { 
     "name": "GMAIL_RTT", 
     "value": "151", 
     "expires": null, 
     "httpOnly": false, 
     "secure": false 
     }, 
     { 
     "name": "S", 
     "value": [REMOVED], 
     "expires": null, 
     "httpOnly": false, 
     "secure": false 
     }, 
     { 
     "name": "SID", 
     "value": [REMOVED], 
     "expires": null, 
     "httpOnly": false, 
     "secure": false 
     }, 
     { 
     "name": "LSID", 
     "value": [REMOVED], 
     "expires": null, 
     "httpOnly": false, 
     "secure": false 
     }, 
     { 
     "name": "HSID", 
     "value": [REMOVED], 
     "expires": null, 
     "httpOnly": false, 
     "secure": false 
     }, 
     { 
     "name": "SSID", 
     "value": [REMOVED], 
     "expires": null, 
     "httpOnly": false, 
     "secure": false 
     }, 
     { 
     "name": "APISID", 
     "value": [REMOVED], 
     "expires": null, 
     "httpOnly": false, 
     "secure": false 
     }, 
     { 
     "name": "SAPISID", 
     "value": [REMOVED], 
     "expires": null, 
     "httpOnly": false, 
     "secure": false 
     }, 
     { 
     "name": "GAPS", 
     "value": [REMOVED], 
     "expires": null, 
     "httpOnly": false, 
     "secure": false 
     }, 
     { 
     "name": "LSOLH", 
     "value": [REMOVED], 
     "expires": null, 
     "httpOnly": false, 
     "secure": false 
     }, 
     { 
     "name": "OGPC", 
     "value": [REMOVED], 
     "expires": null, 
     "httpOnly": false, 
     "secure": false 
     }, 
     { 
     "name": "NID", 
     "value": [REMOVED], 
     "expires": null, 
     "httpOnly": false, 
     "secure": false 
     } 
    ], 
    "headersSize": -1, 
    "bodySize": 0 
    }, 
    "response": { 
    "status": 200, 
    "statusText": "OK", 
    "httpVersion": "unknown", 
    "headers": [ 
     { 
     "name": "pragma", 
     "value": "no-cache" 
     }, 
     { 
     "name": "date", 
     "value": "Thu, 03 Mar 2016 15:52:27 GMT" 
     }, 
     { 
     "name": "content-encoding", 
     "value": "gzip" 
     }, 
     { 
     "name": "x-content-type-options", 
     "value": "nosniff" 
     }, 
     { 
     "name": "server", 
     "value": "GSE" 
     }, 
     { 
     "name": "content-language", 
     "value": "en" 
     }, 
     { 
     "name": "status", 
     "value": "200" 
     }, 
     { 
     "name": "cache-control", 
     "value": "no-cache, no-store, max-age=0, must-revalidate" 
     }, 
     { 
     "name": "content-type", 
     "value": "text/html; charset=UTF-8" 
     }, 
     { 
     "name": "alt-svc", 
     "value": "quic=\":443\"; ma=2592000; v=\"30,29,28,27,26,25\"" 
     }, 
     { 
     "name": "alternate-protocol", 
     "value": "443:quic,p=1" 
     }, 
     { 
     "name": "x-xss-protection", 
     "value": "1; mode=block" 
     }, 
     { 
     "name": "expires", 
     "value": "Fri, 01 Jan 1990 00:00:00 GMT" 
     } 
    ], 
    "cookies": [], 
    "content": { 
     "size": 2096, 
     "mimeType": "text/html" 
    }, 
    "redirectURL": "", 
    "headersSize": -1, 
    "bodySize": -1, 
    "_transferSize": 1051 
    }, 
    "cache": {}, 
    "timings": { 
    "blocked": 1.07300002127886, 
    "dns": -1, 
    "connect": -1, 
    "send": 0.39199995808303, 
    "wait": 81.3200001139194, 
    "receive": 1.9809999503195002, 
    "ssl": -1 
    }, 
    "connection": "2025013", 
    "pageref": "page_1" 
} 

विफल अनुरोध

{ 
    "startedDateTime": "2016-03-03T10:12:35.752Z", 
    "time": 442.6579999853857, 
    "request": { 
    "method": "GET", 
    "url": "https://accounts.google.com/o/oauth2/auth?client_id=597847337936.apps.googleusercontent.com&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.install+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.appdata+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcontacts.readonly+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.metadata.readonly+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar.readonly+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fgmail.readonly&immediate=true&login_hint=XXXXX%40XXXX.com&authuser=-1&include_granted_scopes=true&proxy=oauth2relay235542267&redirect_uri=postmessage&origin=https%3A%2F%2Fwww.moo.do&response_type=token&state=638324187%7C0.1211244794&jsh=m%3B%2F_%2Fscs%2Fapps-static%2F_%2Fjs%2Fk%3Doz.gapi.de.7pJmZpTVQp8.O%2Fm%3D__features__%2Fam%3DAQ%2Frt%3Dj%2Fd%3D1%2Frs%3DAGLTcCOmU_zLoubGrUI-_ZI9ZhB7rGP1Sw", 
    "httpVersion": "unknown", 
    "headers": [ 
     { 
     "name": "Accept", 
     "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" 
     }, 
     { 
     "name": "Referer", 
     "value": "https://www.moo.do/app/" 
     }, 
     { 
     "name": "Upgrade-Insecure-Requests", 
     "value": "1" 
     }, 
     { 
     "name": "User-Agent", 
     "value": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" 
     } 
    ], 
    "queryString": [ 
     { 
     "name": "client_id", 
     "value": "597847337936.apps.googleusercontent.com" 
     }, 
     { 
     "name": "scope", 
     "value": "https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.install+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.appdata+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcontacts.readonly+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.metadata.readonly+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar.readonly+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fgmail.readonly" 
     }, 
     { 
     "name": "immediate", 
     "value": "true" 
     }, 
     { 
     "name": "login_hint", 
     "value": "XXXXX%40XXXX.com" 
     }, 
     { 
     "name": "authuser", 
     "value": "-1" 
     }, 
     { 
     "name": "include_granted_scopes", 
     "value": "true" 
     }, 
     { 
     "name": "proxy", 
     "value": "oauth2relay235542267" 
     }, 
     { 
     "name": "redirect_uri", 
     "value": "postmessage" 
     }, 
     { 
     "name": "origin", 
     "value": "https%3A%2F%2Fwww.moo.do" 
     }, 
     { 
     "name": "response_type", 
     "value": "token" 
     }, 
     { 
     "name": "state", 
     "value": "638324187%7C0.1211244794" 
     }, 
     { 
     "name": "jsh", 
     "value": "m%3B%2F_%2Fscs%2Fapps-static%2F_%2Fjs%2Fk%3Doz.gapi.de.7pJmZpTVQp8.O%2Fm%3D__features__%2Fam%3DAQ%2Frt%3Dj%2Fd%3D1%2Frs%3DAGLTcCOmU_zLoubGrUI-_ZI9ZhB7rGP1Sw" 
     } 
    ], 
    "cookies": [], 
    "headersSize": -1, 
    "bodySize": 0 
    }, 
    "response": { 
    "status": 200, 
    "statusText": "OK", 
    "httpVersion": "unknown", 
    "headers": [ 
     { 
     "name": "pragma", 
     "value": "no-cache" 
     }, 
     { 
     "name": "date", 
     "value": "Thu, 03 Mar 2016 10:12:35 GMT" 
     }, 
     { 
     "name": "content-encoding", 
     "value": "gzip" 
     }, 
     { 
     "name": "x-content-type-options", 
     "value": "nosniff" 
     }, 
     { 
     "name": "server", 
     "value": "GSE" 
     }, 
     { 
     "name": "x-frame-options", 
     "value": "SAMEORIGIN" 
     }, 
     { 
     "name": "content-language", 
     "value": "de" 
     }, 
     { 
     "name": "status", 
     "value": "200" 
     }, 
     { 
     "name": "cache-control", 
     "value": "no-cache, no-store, max-age=0, must-revalidate" 
     }, 
     { 
     "name": "content-type", 
     "value": "text/html; charset=UTF-8" 
     }, 
     { 
     "name": "alt-svc", 
     "value": "quic=\":443\"; ma=2592000; v=\"30,29,28,27,26,25\"" 
     }, 
     { 
     "name": "alternate-protocol", 
     "value": "443:quic,p=1" 
     }, 
     { 
     "name": "x-xss-protection", 
     "value": "1; mode=block" 
     }, 
     { 
     "name": "expires", 
     "value": "Fri, 01 Jan 1990 00:00:00 GMT" 
     } 
    ], 
    "cookies": [], 
    "content": { 
     "size": 0, 
     "mimeType": "text/html" 
    }, 
    "redirectURL": "", 
    "headersSize": -1, 
    "bodySize": -1, 
    "_transferSize": 0, 
    "_error": "" 
    }, 
    "cache": {}, 
    "timings": { 
    "blocked": 0.944999977946281, 
    "dns": -1, 
    "connect": -1, 
    "send": 0.3190000134054589, 
    "wait": 151.53400000417625, 
    "receive": 289.85999998985767, 
    "ssl": -1 
    }, 
    "pageref": "page_1" 
} 

उत्तर

2

महान। होस्ट किया गया डोमेन खातों के लिए शीर्ष लेख (Google अनुप्रयोग) यदि एप्लिकेशन 7 से अधिक OAuth स्कोप के लिए एक अनुरोध करता है:

समस्या/कारण

गूगल प्राधिकरण सर्वर SAMEORIGIN X- फ़्रेम-विकल्प 'देते हैं।7 से कम (इससे कोई फर्क नहीं पड़ता कि स्कोप क्या हैं) और उसी खाते पर एक ही अनुरोध में रिटर्न कॉल में निर्दिष्ट एक्स-फ़्रेम-विकल्प शीर्षलेख नहीं है।

इस रेपो को होने के लिए अतिरिक्त चलने वाले हिस्सों की आवश्यकता होती है (जीएपीआई जेएस क्लाइंट से जेएसएच पैरामेट की आपूर्ति करनी चाहिए) और अन्य परिदृश्य जहां एक्स-फ़्रेम-विकल्प हेडर लौटाया जाता है। इस बिंदु पर हालांकि रेपो फाइलें दिखाती हैं कि Google प्रमाणीकरण सर्वर के साथ कोई समस्या है।

:)

शिकायत एक्स फ़्रेम-विकल्पों हैडर की प्रकृति के कारण, क्लाइंट साइड त्रुटि का पता लगाने पता नहीं होगा एक अनुरोध अवरुद्ध कर दिया गया है कि जो इस विशेष त्रुटि भी एक समस्या के और अधिक बनाता है । इसके अतिरिक्त प्राधिकरण कॉलबैक को कभी भी अधिसूचित नहीं किया जाएगा कि किसी भी प्रकार की अधिसूचना के लिए प्रतीक्षा की गई लिम्बो की स्थिति में अनुरोध करने वाले ऐप को छोड़ने में किसी भी प्रकार की विफलता थी।

समस्या प्रदर्शन

Demos

वहाँ दो रेप्रो फ़ाइलें शामिल हैं:

auth_repro.html - यह पूरी तरह से GAPI जे एस ग्राहक नजरअंदाज कर देता है और इस मुद्दे को दर्शाता है। यह एक विशिष्ट param (jsh) का उपयोग करता है जो क्लाइंट समस्या उत्पन्न करने के लिए प्राधिकरण अनुरोधों को जोड़ता है।

auth_repro_gapi.html - यह समस्या को पुन: पेश करने के लिए जीएपीआई जेएस क्लाइंट का उपयोग करता है।

समाधान

ट्रिमिंग/प्रबंध दायरे होते अनुरोध कर रहे हैं या अपने प्राधिकरण अनुरोधों चुपचाप नाकाम रहने शुरू कर देंगे के बारे में आलसी मत बनो।

यह व्यवहार भी अच्छा नहीं होगा अगर यह व्यवहार एक चीज नहीं था। सबसे अच्छा अनुमान यह है कि यह एक सुरक्षा उपाय गलत हो गया है?

संबंधित मुद्दे