2014-07-26 8 views
17

के साथ उपयोगकर्ता को प्रमाणीकृत करें, मैं लॉगिन के लिए फेसबुक और Google विकल्प दोनों के साथ एक क्लासिक ई-मेल + पासवर्ड लॉगिन के साथ एक ऐप विकसित कर रहा हूं। मैं तीसरे पक्ष के एपीआई के साथ साइन इन करने के बारे में कई चीजों के बारे में सोच रहा हूं:सर्वोत्तम प्रथाओं (एंड्रॉइड के लिए सर्वश्रेष्ठ): फेसबुक या Google लॉगिन

1. क्योंकि एक उपयोगकर्ता अपने फेसबुक खाते से साइन इन कर सकता है और बाद में लॉग इन करने और अपने Google खाते से साइन इन करने का निर्णय लेता है, उपयोगकर्ता को अपने ई-मेल पते से पहचाना जाना चाहिए। इसलिए जब भी वह किसी दूसरे खाते से साइन इन करता है, तो डेटाबेस में ई-मेल पता खोजा जाता है और यदि यह पाया जाता है, तो यह पहले बनाए गए खाते में इस नए साइनइन को जोड़ता है। कृपया इस बिंदु को स्वीकार करें।

2. यदि उपयोगकर्ता फेसबुक लॉगिन के साथ साइन इन करता है, तो आप एक एक्सेस टोकन, उपयोगकर्ता आईडी, उपयोगकर्ता ई-मेल आदि प्राप्त कर सकते हैं। उपयोगकर्ता को प्रमाणित करने का सबसे अच्छा अभ्यास क्या है ताकि यह अभी भी सबसे सुरक्षित तरीका हो? क्या मुझे अपना फेसबुक एक्सेस टोकन और ई-मेल एड्रेस सीधे सर्वर पर भेजना चाहिए? यदि फेसबुक पर एक्सेस टोकन वास्तव में मौजूद है, तो सर्वर को फेसबुक के खिलाफ जांच करनी चाहिए? सर्वर पक्ष पर एप्लिकेशन-निजी एक्सेस टोकन जेनरेट करने का सबसे अच्छा और सबसे सुरक्षित तरीका क्या है? मैंने MD5 हैश के बारे में कुछ सुना है ... क्या मुझे एपीआई कॉल में केवल इस नए जेनरेट किए गए एक्सेस टोकन का उपयोग करना चाहिए और किसी भी फेसबुक प्रमाण-पत्र का उपयोग नहीं करना चाहिए? या क्या मुझे फेसबुक प्रमाण-पत्रों का उपयोग करना चाहिए और इस प्रकार उन्हें सर्वर/क्लाइंट साइड पर सहेजना चाहिए? मैं अपने ऐप के सर्वर पक्ष के लिए जावा ऐप-इंजन का उपयोग करने जा रहा हूं।

3. यदि उपयोगकर्ता फेसबुक पर अपना खाता हटा देता है तो क्या होगा? ऐप इस बारे में कैसे पता चलेगा? यदि यह किसी भी तरह से जानता है, तो खाते के साथ क्या करना चाहिए?

  1. क्या मुझे नियमित रूप से मान्य होने पर फेसबुक के खिलाफ एक्सेस टोकन की जांच करनी चाहिए? क्यों और कैसे और कितनी बार?

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

+0

यह पूरी तरह से एक लंबा शॉट है लेकिन कुछ दिन पहले Google ने अपने googlesamples गिटहब परियोजनाओं में पहचान-टूलकिट जोड़ा; https://github.com/googlesamples/identity-toolkit-android। और पहचान-टूलकिट मुख्य वेब पेज आपके द्वारा पूछे जा रहे समान समस्याग्रस्तताओं से कम से कम संबंधित लगता है; https://developers.google.com/identity-toolkit/। यह सब कुछ है जो मुझे कुछ भी नहीं के बगल में पता है लेकिन आपके प्रश्न ने मुझे इस बारे में याद दिलाया। – harism

+0

धन्यवाद! मेरे कुछ सवालों के जवाब देने में मदद कर सकता है। – vandus

उत्तर

9

कुछ पढ़ने के बाद और पूछकर मैं यह करने के लिए आए हैं:

1. हाँ, अगर आप अपने उपयोगकर्ताओं को अपने फेसबुक या गूगल खाते के साथ साइन अप करना चाहते हैं, तो आप एपीआई, फोन ई-मेल प्राप्त पता (एंड्रॉइड पर Google के खाता प्रबंधक के साथ यह भी आसान है), इसे अपने सर्वर पर भेजें जो ई-मेल पता सहेज लेगा, उपयोगकर्ता आईडी को संबद्ध करेगा और इसका अपना एक्सेस कोड जेनरेट करेगा। एक्सेस कोड को बाद में उपयोग के लिए स्टोर करने के लिए आपके क्लाइंट ऐप पर वापस भेजा जाएगा। जब भी उपयोगकर्ता कुछ परिचालन करना चाहता है, तो सर्वर एपीआई को उपयोगकर्ता के ई-मेल पते और एक्सेस कोड के साथ बुलाया जाएगा और आप सुनिश्चित कर सकते हैं कि यह वास्तव में उपयोगकर्ता है। एपीआई को बाहर से कॉल करना और ई-मेल पता और एक्सेस कोड दोनों को सही ढंग से अनुमान लगाना बहुत मुश्किल है, इसलिए यह कुछ हद तक सुरक्षित है।

2. चूंकि फेसबुक लॉगिन केवल उपयोगकर्ता को प्रमाणीकृत करने के लिए उपयोग किया जाता है, जिसका अर्थ है कि उपयोगकर्ता केवल मौजूद है और खाता है, हमें वास्तव में एफबी एक्सेस टोकन की आवश्यकता नहीं है। हमें केवल फेसबुक सर्वर के लिए एपीआई कॉल के लिए एफबी एक्सेस टोकन की आवश्यकता होगी, उदाहरण के लिए जब हम उपयोगकर्ता के दोस्तों की एक सूची पुनर्प्राप्त करना चाहते हैं और इसी तरह। इस मामले में, आप सक्रिय एसडीके द्वारा प्रदान किया गया सक्रिय सत्र प्राप्त कर सकते हैं और वहां से एक्सेस टोकन प्राप्त कर सकते हैं।

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

1

आप कई मायनों में यह कर और कार्यान्वयन पर आप पर निर्भर है सकते हैं, आप अपने ईमेल प्रत्येक लॉगिन यह हैश से प्राप्त है और अपने डेटाबेस में एक उपयोगकर्ता के रूप में सहेज सकते हैं । फिर किसी भी उपयोगकर्ता के लिए लॉग इन किया जा सकता है और ईमेल वापस आ गया है और जांचें कि क्या हैश पहले से मौजूद है या नहीं।

आप उपयोगकर्ता के साथ सेवा के साथ लॉगिन कर सकते हैं और फिर उन्हें उपयोगकर्ता नाम, ईमेल पासवर्ड आदि के साथ उपयोगकर्ता निर्माण समाप्त कर सकते हैं। फिर जब आप किसी भिन्न सेवा के साथ लॉगिन करने का प्रयास करते हैं तो आप इसे फिर से साइन अप के माध्यम से देख सकते हैं यदि आपके पास एक ही खाता दो बार बनाने का प्रयास है, तो मेरे पास पहले से एक खाता बटन है, साथ ही साथ खाते से लिंक करना।

किसी उपयोगकर्ता से जुड़ी किसी तृतीय पक्ष लॉगिन टोकन तालिका में जुड़े टोकन को सहेजें।

मैं सभी उपयोगकर्ता निजी डेटा hashing की सलाह देते हैं, उपयोगकर्ताओं को अपने ऐप्लिकेशन के साथ और अधिक विश्वास देता है

मैं तीसरे पक्ष के खातों पर भरोसा करते हैं और "अपने खाते बनाने का काम पूरा" विश्वास करना कभी नहीं प्रक्रिया बेहतर खाता प्रबंधन बनाएगी। उपयोगकर्ताओं को तृतीय पक्ष या उपयोगकर्ता नाम और पासवर्ड दोनों के साथ साइन इन करने की अनुमति देना।

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