2013-02-17 16 views
5

पूछता है मुझे अपनी कंपनी के लिए एक आंतरिक वेब ऐप मिला है जो Google प्रमाणीकरण प्रणाली के साथ लॉगिन का उपयोग करता है। यह अधिकांश भाग के लिए अच्छी तरह से काम कर रहा है, वे Google के साथ प्रमाणित कर सकते हैं, मेरे ऐप के लिए मूल उपयोगकर्ता विवरण तक पहुंचने के लिए सहमति देते हैं, और फिर जब वे मेरे ऐप पर वापस आते हैं, तो मैं वास्तव में उनके उपयोगकर्ता के विवरण प्राप्त कर सकता हूं।Google के साथ लॉगिन हमेशा उपयोगकर्ता सहमति

मुद्दा यह है कि मैंने सोचा कि एक बार वे सहमति देते हैं तो उन्हें हर बार ऐसा नहीं करना पड़ेगा। क्या यह गलत धारणा है? जैसा कि अब है, हर बार जब वे "Google के साथ लॉगिन" पर क्लिक करते हैं तो उन्हें मेरे ऐप पर रीडायरेक्ट किए जाने के बजाय सहमति देना होगा।

मैं PHP (कोडिनेटर) का उपयोग कर रहा हूं और एक बहुत अच्छा ओथ लिब जीथ्यूब (फिल स्टर्जनजन की लाइब्रेरी का कांटा) पर पाया गया है। क्या मुझे कुछ पैरामीटर गुजरना चाहिए ताकि उपयोगकर्ता को पहली बार सहमति न देनी पड़े?

उत्तर

15

Google लॉगिन को हर बार उपयोगकर्ता सहमति की आवश्यकता नहीं होती है। यदि आप OAuth2 लॉगिन प्रक्रिया का उपयोग कर रहे हैं, तो आपको दूसरी बार w/o पुन: अनुमोदन लॉग इन करने में सक्षम होना चाहिए: https://developers.google.com/accounts/docs/OAuth2Login

कुछ संदर्भों में, हालांकि, ऑटो-स्वीकृति अक्षम होने के लिए संभव है, इसके बाद प्रत्येक लॉगिन पर उपयोगकर्ता सहमति की आवश्यकता।

पहला और सबसे आम मामला यह है कि यदि आपका एप्लिकेशन स्पष्ट रूप से Google से सहमति के लिए संकेत देने के लिए अनुरोध करता है। जांचें कि क्या आपका प्राधिकरण अनुरोध (जिसे आपने उदाहरण या नमूना कोड से कॉपी किया हो) में 'प्रॉम्प्ट = सहमति' या पुराना, गैर-मानक फॉर्म 'approval_prompt = force' शामिल है। इन पैरामीटर को हटाने (यदि मौजूद है), संभवतः ऑटो-स्वीकृति को काम करना शुरू कर देगा।

एक और स्थिति यह है कि यदि आपका रीडायरेक्ट यूआरएल 'लोकलहोस्ट' या कुछ अन्य यूआरएल पर आधारित है जो वैश्विक DNS नेमस्पेस से संबंधित नहीं है। इस मामले में, सुरक्षा कारणों से, Google accounts.google.com डोमेन में उपयोगकर्ता के कंप्यूटर पर एक कुकी सेट करता है, यह संकेत करने के लिए कि उपयोगकर्ता ने _his_device_ को स्थानीयहोस्ट (या स्थानीय डोमेन) पर 'foo' में लॉगिन करने के लिए अधिकृत किया है; यदि Google कुकी प्राप्त करता है तो Google केवल दूसरे अनुरोध को स्वत: स्वीकृति देगा। इसका कारण यह है कि 'लोकलहोस्ट' (या स्थानीय डोमेन, या वैश्विक DNS नामस्थान पर निर्मित अन्य यूआरएल) का अर्थ डिवाइस-निर्भर नहीं है, और प्राधिकरणों को डिवाइस पर लागू करने की अनुमति देने से सुरक्षा जोखिम लागू हो सकते हैं। इसलिए यदि आपकी कंपनी ने बाहर निकलने पर सभी कुकीज़ को साफ़ करने के लिए ब्राउज़र कॉन्फ़िगर किया है, और आप एक गैर-पूर्ण URL का उपयोग करते हैं, तो आप अपने उपयोगकर्ताओं को हर बार सहमति दे सकते हैं। समाधान या तो इंटरनेट-वैध होस्टनाम पर आपके एंडपॉइंट को होस्ट करने के लिए है (होस्ट को इंट्रानेट के बाहर से एक्सेस करने की आवश्यकता नहीं है, केवल मेजबाननाम को विश्व स्तर पर वैध होना आवश्यक है), या आपको accounts.google.com से छूट देना होगा कुकी समाशोधन नीति।

+0

धन्यवाद ब्रेनो। तीसरे पक्ष के lib में डाइविंग, यह स्पष्ट रूप से appr_prompt = बल जोड़ रहा था। मैं उस दस्तावेज़ में नहीं आया था जो मैंने पढ़ा था, लेकिन इसे हटाने से वास्तव में समस्या ठीक हुई। एक आकर्षण की तरह काम करना, धन्यवाद! – Greg

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