2010-04-21 11 views
16

मैं एक वेब अनुप्रयोग के लिए OpenId लॉगिन को लागू करने की कोशिश कर रहा हूं। जब भी नया उपयोगकर्ता ओपनआईडी के माध्यम से लॉग इन करता है तो मैं टिकाऊ पर एक नया उपयोगकर्ता बनाता हूं, और डेटा के बीच में मैं अपना ओपनिड यूआरएल स्टोर करता हूं, ताकि अगली बार वे उस उपयोगकर्ता के साथ लॉगिन कर सकें।Google के ओपनआईडी कार्यान्वयन की आईडी क्यों बदलती है?

मैं अपने Gmail OpenID के साथ इस परीक्षण कर रहा हूँ, और समस्या यह है कि हर मैं यह कर रहा है, गूगल एक अलग OpenID URL भेजता है, कि है, https://www.google.com/accounts/o8/id?id=SomethingThatChangesFromTimeToTime

बेशक

मैं तो wheter बता नहीं पा रहा हूँ यह एक नया उपयोगकर्ता है या नहीं। मैं थोड़ी परेशान हूं: खुले पहचानकर्ता हमेशा एक ही नहीं रहना चाहिए?

+4

अधिक प्रश्न चिह्न और विस्मयादिबोधक चिह्नों का उपयोग करने का प्रयास करें!?! – fig

+2

मैं आमतौर पर ऐसा नहीं करता, लेकिन मैं वास्तव में इस व्यवहार में परेशान था। मुझे उम्मीद है कि ओपनआईडी का लाभ एक प्रदाता पर भरोसा करने के बजाय खुद को पहचानने के लिए एक अद्वितीय यूआरएल होना था जो हर बार आपके लिए एक असाइन करता है। – Andrea

+0

मुझे भी एक ही समस्या थी, लेकिन आगे खोदने पर मुझे पता चला कि प्रमाणीकरण अनुरोध के लिए मेरे मामले में डोमेन एक ही स्ट्रिंग है, फिर भी यह विभिन्न ब्राउज़रों में अलग-अलग मूल्य प्रदान करता है। मैंने इसे एफएफ और क्रोम में परीक्षण किया। यकीन नहीं है कि मैं यहाँ क्या खो रहा हूँ। – awake416

उत्तर

19

Google का ओपनआईडी पहचानकर्ता मेजबान अनुरोध सहित मेजबान सहित एकाधिक डेटा के एक हेशेड प्रतिनिधित्व को कम या कम करता है (प्रदाता को भेजे गए अधिक openid.realm पैरामीटर)। तो यदि आपका होस्ट समय-समय पर बदलता है (जैसे बंदरगाह और आईपी पता बदलता है), तो आईडी समय-समय पर भी बदल जाएगी। StackOverflow भी इस समस्या के लिए एक समाधान का उपयोग करता है। इन पदों की जाँच करें:

यहाँ गूगल से एक पूछे जाने वाले प्रश्न अंश है:

प्रश्न: OpenID कल्पना का कहना है कि openid.realm वैकल्पिक है, और है कि अगर प्रदान नहीं किया गया है, Google को इसके बजाय openid.return_to URL का उपयोग करना चाहिए। क्या वह काम करेगा?

ए: यह इस अर्थ में काम करेगा कि प्रोटोकॉल सफलतापूर्वक पूरा हो जाएगा। लेकिन अगर आपका return_to यूआरएल www.example.com/authenticate?style=openid-federated_login जैसा कुछ है, तो आप हमसे उपयोगकर्ताओं को आपकी साइट पर एक विशिष्ट पते को स्वीकार करने और भरोसा करने के लिए कहने के लिए कह रहे हैं, जो उपयोगकर्ता के अनुकूल नहीं है। इसके अलावा, अगर आप openid.realm पैरामीटर को छोड़ देते हैं, तो आप कभी भी अपने return_to यूआरएल को बदलने में सक्षम नहीं होंगे: यह आपके Google खाता उपयोगकर्ताओं के दायरे और यूआरएल पहचानकर्ताओं को भी स्पष्ट रूप से बदल देगा।

+0

मैं सिर्फ उसी (स्थानीय) होस्ट से दो प्रमाणीकरण कर रहा हूं, कुछ सेकेंड एक दूसरे से दूर है। तो मुझे लगता है कि कुछ भी नहीं बदल रहा है; फिर भी मैं अलग-अलग पहचान (openid.identity) प्राप्त करता हूं। – Andrea

+0

अपने ऐप और Google के बीच संचार लॉग इन करें। प्रमुख अयस्क ढांचे इस का समर्थन करते हैं। जांचें कि अनुरोध आपके दोनों प्रश्नों के लिए समान है या नहीं। – SztupY

+0

SztupY: "मेजबान सहित अनुरोध आया था" सख्ती से सच नहीं है। यहां परिवर्तनीय openid.realm पैरामीटर है, जो अनुरोध से आया है, जहां से अनुरोध नहीं किया गया है, बल्कि जहां प्रतिक्रिया भेजी जाएगी (जो एक बहुत ही अलग बात हो सकती है, लेकिन अक्सर वही बात होती है)। –

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