2016-02-02 20 views
9

के साथ प्रमाणीकरण हम एक आईओएस ऐप विकसित कर रहे हैं, जहां उपयोगकर्ता को ईमेल + पासवर्ड (या मोबाइल नंबर) का उपयोग करके प्रमाणित करने की आवश्यकता है। हमारा बैकएंड अक्का-एचटीपी का उपयोग कर कुछ माइक्रोस्कोपिस से बना है। इसे तेज़, स्केलेबल, समवर्ती, और प्रमाणीकरण की आवश्यकता है + प्राधिकरण को हमारी कई सेवाओं में काम करना चाहिए। मैं यह पता लगाने की कोशिश कर रहा हूं कि किस प्रमाणीकरण विधि का उपयोग करना है। अक्का-HTTP वर्तमान में मूल औथ और OAuth2 का आंशिक कार्यान्वयन प्रदान करता है।अक्का-एचटीपी

तो पहले हम मूल प्रमाणीकरण (बहुत सरल और पर्याप्त कार्यक्षमता) पर विचार नहीं कर रहे थे, ओथ 1 (बहुत जटिल), इसलिए हम ओथ-2.0 की ओर बढ़ गए क्योंकि यह एक मानक है।

फिर हमने एडब्ल्यूएस कॉग्निटो माना क्योंकि यह ओथ-2.0 और ओपनआईडी कनेक्ट को जोड़ता है जो प्रमाणीकरण तंत्र देता है जो OAuth2 की कमी है। http://www.thread-safe.com/2012/01/problem-with-oauth-for-authentication.html

तब हमने महसूस किया कि OAuth2 सिर्फ एक तीसरी पार्टी का उपयोग कर प्रमाणीकरण के लिए है - जब वास्तव में हम एक तीसरे पक्ष के प्रमाणीकरण प्रदाता की जरूरत नहीं है - हो सकता है कि हम इसे अपने आप को क्या करने की जरूरत है, और cognito का उपयोग कर एक overkill कि होता है हमारे microservices बाहर अतिरिक्त API कॉल बनाने ...

तो मैं अपने स्वयं के कस्टम प्रमाणन प्रदाता बनाने, WSSE चश्मा का उपयोग कर के बारे में थोड़ा पढ़ा: http://symfony.com/doc/current/cookbook/security/custom_authentication_provider.html और मैं भी स्प्रे का उपयोग कर इस उदाहरण पाया है, लेकिन मुझे यकीन है कि यह कर रहा हूँ अक्का-एचटीपी से अलग नहीं: http://danielasfregola.com/2015/06/29/how-to-create-a-spray-custom-authenticator/ यह बहुत सरल दिखता है और टोकन एक्सप नहीं है iration ...

तो मेरा सवाल है, क्या मुझे कुछ याद आ रही है? मुझे किस विधि को चुना जाना चाहिए और इसके लिए मुझे उदाहरण कहां मिल सकते हैं?

मुझे लगता है कि मैं मंडलियों में जा रहा हूं, हमें स्क्रैच से अपना कस्टम प्रमाणीकरण प्रदाता लिखना होगा, जो कि समझ में नहीं आता है। लगभग सभी को प्रमाणीकरण की आवश्यकता होती है और यह एक मानक होना चाहिए।

+2

सचमुच मुझे लगता है कि आप इसे तब तक अधिक जटिल बना रहे हैं जब तक कि विशिष्ट आवश्यकताएं नहीं हैं जिनका आपने उल्लेख नहीं किया है। मैं आमतौर पर एचटीटीपीएस के पीछे एपीआई डालता हूं, मोबाइल क्लाइंट को उपयोगकर्ता नाम/ईमेल और पासवर्ड के साथ प्रमाणीकृत करने देता हूं और यूयूआईडी-जैसे टोकन लौटाता है। मैं कुछ प्रकार के वितरित कैश (memcached, ehcache, redis या इसी तरह) में टोकन स्टोर। – expert

+0

आपके माइक्रोस्कोर्सेस कहां चल रहे हैं? – behrooziAWS

+0

मुझे नहीं लगता कि आपको अपने परिदृश्य में ओपनआईडी कनेक्ट की ज़रूरत है, इसलिए एक साधारण OAuth2-Service जो AccessTokens को इंगित करती है (jwt.io देखें) जिसमें उपयोगकर्ता आईडी, भूमिका और समाप्ति शामिल है, टिमस्टैम्प को आपकी सेवाओं को स्वतंत्र रूप से प्रमाणीकृत/अधिकृत करने के लिए आवश्यक सभी चीज़ें होनी चाहिए । एकमात्र चीज जो थोड़ा मुश्किल आईएमओ है ताज़ा-टोकन हैंडलिंग है। – felixbr

उत्तर

0

मैं हाल ही में सॉफ्टवेयरमिल की akka-http-session लाइब्रेरी का उपयोग कर रहा हूं और इसे सरल और एकीकृत करने में आसान पाया है। इसमें केस क्लास आधारित सत्र, जेडब्ल्यूटी, हेडर्स और सीएसआरएफ टोकन का उपयोग करके, मार्गों में उपयोग के लिए कुछ अच्छे सरल निर्देशों का उपयोग करके प्लगिंग योग्य स्टोरेज के साथ टोकन रीफ्रेश करें।