2010-06-15 10 views
6

यहां एक उपयोग केस है:सुरक्षित मोटा होने के लिए, मोटी क्लाइंट में प्रमाणीकरण कैसे डिज़ाइन किया जाए?

मेरे पास डेस्कटॉप एप्लिकेशन (ग्रहण आरसीपी का उपयोग करके बनाया गया है) जो प्रारंभ में, पॉप-इन 'उपयोगकर्ता नाम' और 'पासवर्ड' फ़ील्ड के साथ एक संवाद बॉक्स खोलता है। एक बार अंतिम उपयोगकर्ता, उसके उपयोगकर्ता नाम और पासवर्ड को इनपुट करता है, एक सर्वर से संपर्क किया जाता है (एक वसंत रिमोट-सर्वलेट, क्लाइंट पक्ष वसंत httpclient होने के साथ: approacheshere के समान।), और सर्वर पक्ष पर प्रमाणीकरण किया जाता है।

कुछ ऊपर उल्लेख किया परिदृश्य से संबंधित प्रश्नों:

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

कृपया मुझे अपने डिजाइन/वास्तुकला टिप्पणियों/सुझावों को बताएं। आपकी सहायता की सराहना।

उत्तर

5

सरल उत्तर है: प्रमाणीकरण सेवा को नीचे जाने दें!

सुनिश्चित करें कि आपकी प्रमाणीकरण सेवा किसी वर्चुअल आईपी के पीछे क्लस्टर्ड, लोड संतुलित वातावरण में चल रही है। इस तरह, आप उस घटना में डाउनटाइम से बच सकते हैं जब एक व्यक्तिगत सर्वर नीचे चला जाता है। यह न केवल सेवा के लिए जाता है, बल्कि किसी भी डेटा स्रोत पर निर्भर करता है।

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

+0

पर्याप्त मेला; अब, क्या आपके पास जटिल जवाब है? :) – Jay

+0

जटिल उत्तर: अपने उपयोगकर्ताओं को प्रमाणीकृत करने का एक वैकल्पिक तरीका खोजें। शायद बॉयोमीट्रिक्स? यदि आप सोचते हैं कि यह आपके उपयोगकर्ताओं के लिए सार्थक कार्यक्षमता प्रदान करेगा, तो आप हमेशा "सीमित मोड" के अपने विचार को कार्यान्वित कर सकते हैं। – dbyrne

+1

बॉयोमीट्रिक्स - दिलचस्प लगता है, लेकिन जाहिर है कि यह थोड़ा दूर लाया गया है। वैसे भी, इस बारे में सोचें .. सेवा कहें नीचे, क्लाइंट पक्ष पर प्रमाणीकरण और स्वाधीकरण विवरण कैशिंग करने के बारे में कैसे? और, मैं उपयोगकर्ताओं को सामान्य की तरह एप्लिकेशन चलाने देता हूं, लेकिन नेटवर्क/सेवा ऑनलाइन वापस आने के बाद ही सभी बदलाव किए जाएंगे/समन्वयित किए जाएंगे? वह कैसा लगता है? – Jay

3

क्या मेरे पास बैकअप के रूप में काम करने वाली एक अलग मशीन पर बैक अप प्रमाणीकरण सेवा होनी चाहिए?

हाँ! यह सबसे अच्छा समाधान होगा। इस मुद्दे को आईएमओ को नेटवर्क/आधारभूत संरचना स्तर पर निपटाया जाना चाहिए, न कि ग्राहक पर।

यदि एप्लिकेशन के उपयोगी भाग हैं जो अभी भी नेटवर्क एक्सेस (जैसे राउटर डाउन, एनआईसी पॉप पॉप) के साथ काम कर सकते हैं, विकल्प 1 पर विचार किया जा सकता है। यह कितना संभव है और आपका ऐप कितना महत्वपूर्ण है इसके खिलाफ आवश्यक काम की मात्रा ऑफ़सेट करें।

2

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

डेस्कटॉप क्लाइंट को सीमित तरीके से चलाना एक बहुत अच्छा विचार है। कल्पना करें कि क्या आप ईमेल लिखने में असमर्थ थे, अनुलग्नक को छेड़छाड़ करते हैं, या ईमेल क्लाइंट में कुछ भी करते हैं यदि आप लॉग इन नहीं थे। एक अच्छा उपयोगकर्ता अनुभव ऑफ़लाइन काम करने की क्षमता की मांग करता है।

मैं एक वापस ऊपर प्रमाणीकरण सेवा एक अलग मशीन पर चल रहा है, एक बैकअप के रूप में काम कर रहा है चाहिए?

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

+0

मैं आप जो कह रहा हूं उससे सहमत हूं, हालांकि मुझे उससे इंप्रेशन मिला कि "ऑफलाइन" काम के लिए अवसर कम नहीं था। उदाहरण के लिए एक व्यापारिक अनुप्रयोग अधिक उपयोग नहीं होता है जब तक कि आप वास्तव में व्यापार नहीं कर सकते। पिछले 4 वर्षों से मैंने कुछ सौ अनुप्रयोगों द्वारा उपयोग की जाने वाली प्रमाणीकरण सेवा विकसित और रखी है। हमारे पास लगभग एक घंटे तक चलने वाले सबसे लंबे समय तक डाउनटाइम के साथ 3 घटनाएं हो सकती हैं। ऐसी दुर्लभ घटना के लिए "सीमित" मोड विकसित करने के औचित्य के लिए एक आवेदन को बहुत महत्वपूर्ण होना चाहिए। विशेष रूप से यदि उपयोगकर्ता के लिए बहुत कुछ नहीं है। – dbyrne

+0

@dbyrne - बहुत अच्छे अंक। मैं इस बात से सहमत हूं कि विभिन्न मामलों में आप आवेदन के सीमित संस्करण की पेशकश नहीं करेंगे, खासकर विकास की अतिरिक्त जटिलता आदि के साथ। – thetaiko

1
  1. तो कहा था कि यह प्रमाणीकरण सेवा नीचे जाने के लिए थे, क्या सबसे अच्छा तरीका होगा आगे कार्यवाही को संभालने के लिए? प्रमाणीकरण ऐसा कुछ है जिसे मैं दूर नहीं कर सकता। डेस्कटॉप क्लाइंट को "सीमित" मोड में चलाना अच्छा विचार होगा? उदाहरण के लिए, महत्वपूर्ण विशेषताएं/मेनू/दृश्य अक्षम हो जाएंगे, शेष एप्लिकेशन पहुंच योग्य होगा?

क्या क्लाइंट सर्वर के बिना उपयोगी है? क्या ऐसी चीजें हैं जो उपयोगकर्ता कर सकते हैं? यदि हां, तो क्या आप चाहते हैं कि उपयोगकर्ता प्रमाणीकरण के बिना इन चीजों को करने में सक्षम हो? यह आपके प्रश्न का उत्तर है।

यह स्पष्ट नहीं है कि आप क्या कहते हैं: "प्रमाणीकरण ऐसा कुछ है जिसे मैं दूर नहीं कर सकता।" आपका मतलब क्या है। क्या आपका मतलब है कि कुछ ऐसी विशेषताएं हैं जिनके लिए उपयोगकर्ता को प्रमाणीकृत होना आवश्यक है, या यह किसी और द्वारा लगाई गई आवश्यकता है, या? (क्यों आप इसके साथ दूर नहीं कर सकते?)

  1. मैं एक वापस ऊपर प्रमाणीकरण सेवा एक अलग मशीन पर चल रहा है, एक बैकअप के रूप में काम कर रहा है चाहिए?

ऊपर की स्थिति में आपका ग्राहक कितना उपयोगी है? यदि यह बहुत उपयोगी है, तो आप इस निर्णय को आधार दे सकते हैं और बैकअप सर्वर को बनाए रखने के लिए कितना खर्च करना है, इस पर प्रमाणित सुविधाएं कितनी मूल्यवान हैं।

यदि आपका आवेदन प्रमाणीकरण के बिना बेकार है, तो बैकअप प्रमाणीकरण सर्वर में निवेश करने के लिए अपने निर्णय का आधार लें कि आपके उपयोगकर्ता प्रमाणित नहीं होने पर आपको कितना खर्च होता है।

  1. इस परिदृश्य में सामान्य सर्वोत्तम अभ्यास क्या हैं? I Google gears के बारे में पढ़ना याद रखें और यह आपको ऑफ़लाइन सामान को संपादित करने और कैसे करने देगा - जैसे कुछ ऐसा डिज़ाइन किया जाना चाहिए?

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

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