2010-06-29 11 views
30

मैं एक इंट्रानेट Django परियोजना पर काम कर रहा हूँ एक कंपनी लॉगिन के लिए Google Apps का उपयोग करता है के लिए (GAE का उपयोग नहीं)। इसलिए मैं चाहता हूं कि मेरे उपयोगकर्ता अपने Google खाते लॉगिन का उपयोग करके मेरे django प्रोजेक्ट में लॉग इन कर सकें। ओपनआईडी उचित लगता है, हालांकि शायद ओथ भी काम कर सकता है?कौन सा openid/OAuth पुस्तकालय Google Apps खातों पर एक Django परियोजना कनेक्ट करने के लिए?

मैं वहां इसी नाम पुस्तकालयों का एक बहुत देखने के बाहरी लॉगिन सिस्टम के लिए Django के प्रमाणन प्रणाली कनेक्ट करने के लिए:

यहाँ मैं एकीकरण के साथ क्या करना चाहते हैं क्या करना है: उपयोगकर्ता Google खातों के साथ प्रवेश किया है, देशी Django प्रणाली के बजाय। व्यवस्थापक प्रणाली जैसी चीजों के लिए django की अनुमति मॉडल रखें। तो मुझे लगता है कि इसका मतलब है कि पहली बार django में एक नया उपयोगकर्ता रिकॉर्ड बनाना, जिसे हमने लॉग इन करने से पहले नहीं देखा है।

क्या इनमें से किसी भी परियोजना का उपयोग कर अनुभव वाला कोई भी व्यक्ति मुझे सलाह दे सकता है कि कौन सा काम करेगा? या सिर्फ सलाह है कि यदि आप कोशिश कर चुके हैं तो सबसे सक्रिय/कार्यात्मक कौन से हैं? धन्यवाद!

+0

Google ने अपने ओपनआईडी समर्थन को बहिष्कृत कर दिया, और अधिकांश उत्तर अब काम नहीं करते (या अप्रैल 2015 में काम करना बंद कर देंगे)। यह प्रश्न देखें: http://stackoverflow.com/questions/27040648/which-django-openid-library-works-with-new-google-openid –

उत्तर

17

मैं अंत में यह काम कर रहे है, इसलिए मैं अपने ही सवाल का जवाब देंगे के बाद से यहां पिछले जवाब मददगार थे लेकिन पूरी कहानी नहीं है।

django-openid-auth की स्थापना की और उपयोग करने के लिए वास्तव में काफी आसान है। रीडमे फ़ाइल बहुत स्पष्ट है। तुम सिर्फ मानक गूगल खातों का उपयोग करना चाहते हैं (यानी @ gmail.com पतों) तो आप इसके साथ settings.py में कॉन्फ़िगर करें:

OPENID_SSO_SERVER_URL = 'https://www.google.com/accounts/o8/id' 

लेकिन अगर आप एक "क्षुधा गूगल" खाते का उपयोग करना चाहते हैं, यानी जीमेल की मेजबानी की अपनी कंपनी के डोमेन पर, यह अधिक जटिल है। मुझे this question से मेरा विवरण मिला। अपने Google ऐप्स खातों का उपयोग करने के लिए,

OPENID_SSO_SERVER_URL = 'https://www.google.com/accounts/o8/site-xrds?hd=example.com' 
# replace example.com with your hosted google apps domain 

भविष्य में यह केवल काम कर सकता है, लेकिन आज शायद यह नहीं होगा। समस्या अजगर-ओपनिड में है जो django-openid-auth पर निर्भर करता है। पायथन-ओपनिड का मानक निर्माण Google प्रोटोकॉल एक्सटेंशन का उपयोग नहीं कर रहा है। (Google को प्रोटोकॉल का विस्तार करने की आवश्यकता क्यों है? http://groups.google.com/group/google-federated-login-api/web/openid-discovery-for-hosted-domains के माध्यम से खोदें और रिपोर्ट करें। शुभकामनाएं।) तो आपको इसके बजाय पाइथन-ओपनिड में एडीयू के पैच का उपयोग करने की आवश्यकता है, जो यहां उपलब्ध है: http://github.com/adieu/python-openid

इसे अपने मौजूदा पायथन-ओपनिड पर स्थापित करें। अब यह काम करना चाहिए।

OPENID_USE_AS_ADMIN_LOGIN सेटिंग से सावधान रहें, क्योंकि यह आप एक openid उपयोगकर्ता खाता जो 'स्टाफ' या व्यवस्थापक जो डिफ़ॉल्ट रूप से नहीं होगा उपयोग करने के लिए 'सुपर उपयोगकर्ता' है करने की आवश्यकता है। तो आपको डीजेंगो में खाता बनाने के लिए ओपनिड को सक्षम करने, अपने ओपनिड के साथ लॉग इन करने की 2-चरणीय प्रक्रिया करने की आवश्यकता होगी, फिर अपने पुराने व्यवस्थापक खाते का उपयोग करके अपने स्वयं के ओपनिड खाते को सुपरसियर के रूप में चिह्नित करने के लिए, और फिर गैर-ओपनिड व्यवस्थापक को अक्षम करने की आवश्यकता होगी पहुंच।

एक और बात: आपके डोमेन व्यवस्थापक को यह काम करने से पहले आपके डोमेन के लिए ओपनिड लॉगिन सक्षम करने की आवश्यकता हो सकती है। नियंत्रण http://www.google.com/a/cpanel/example.com/SetupIdp

+1

आपने मेरे लिए 2 दिन + लायक काम बचाया है। एक बियर के लिए देखभाल ?! –

3

मैं django-openid-auth का उपयोग किया है। ठीक काम करता है, पहली बार साइन इन करते समय उपयोगकर्ता खाता बना सकता है। आप django व्यवस्थापक पैनल में उपयोगकर्ता खाते के साथ ओपनिड लॉगिन भी जोड़ सकते हैं।

0

मैं इसे पसंद किया है कि Django socialregistration मुझे Google खातों, फेसबुक, याहू और बहुत आसानी से किसी भी अन्य OpenID साइट में प्लग करने के लिए अनुमति दी। तुम बस इतना की तरह एक कड़ी के रूप में प्रदाता देने की आवश्यकता:

<a href="/socialregistration/openid/redirect/?openid_provider={{ 'http://yahoo.com'|urlencode }}"><img src="{{MEDIA_URL}}/images/yahoo.png"/></a>

0

वे सब लगभग समान हैं। मुझे django-authopenid पसंद है। इसमें बहुत अच्छा दस्तावेज है और इसका उपयोग करना बेहद आसान है। यह वही करेगा जो आप चाहते हैं और डीजेंगो-ओपनिड से बेहतर प्रदर्शन करें (जो कि मैंने कोशिश की है केवल एक ही है)।

HTH

1

मुझे पता है कि यह एक देर का जवाब है, लेकिन मैं इसी तरह की चीजें कर रहा हूं और मैंने अभी django-socialregistration खोजा है। जो मूल रूप से ओएथ, ओपनआईडी, फेसबुक कनेक्ट इत्यादि करता है। कुछ अन्य विकल्पों के विपरीत यह सक्रिय रूप से विकसित और कई परियोजनाओं द्वारा उपयोग किया जाता है।

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