2011-10-12 18 views
7

मैं छोटी आरईएसटी सेवा विकसित कर रहा हूं जो क्लाइंट सत्र दृढ़ता का समर्थन करना चाहिए। जैसा कि आप आरईएसटी के कारण जानते हैं हम सर्वर पर किसी भी क्लाइंट डेटा को स्टोर नहीं कर सकते हैं, डेटा क्लाइंट साइड पर संग्रहीत किया जाना चाहिए और ग्राहक का अनुरोध स्वयं पर्याप्त होना चाहिए। तो ... हम क्लाइंट सत्र कैसे स्टोर कर सकते हैं? इंटरनेट पर खोज कर मुझे कुछ तरीकों का पता चला है कि इसे कैसे महसूस किया जाए। उदाहरण के लिए: हम क्लाइंट एन्क्रिप्टेड टोकन को भेजते हैं जिसमें क्लाइंट की आईडी (निक ... आदि) होती है, जैसे टोकन = एईएस (आईडी, गुप्तकी); और फिर हम गुप्त कुंजी के साथ सर्वर पर टोकन डिक्रिप्ट करने के हर अनुरोध उपयोगकर्ता को अधिकृत कर रहे हैं। क्या कोई भी कुछ सलाह दे सकता है? शायद समान कार्यक्षमता करने के लिए एक और अच्छे तरीके हैं। इसके लिए कौन सा क्रिप्टो एल्गोरिदम बेहतर होगा? धन्यवाद।आरईएसटी सेवाओं में सत्र

+0

आप इन लगातार क्लाइंट सत्रों के साथ प्राप्त करने का प्रयास कर रहे हैं? क्या यह प्रमाणीकरण प्रक्रिया का प्रदर्शन अनुकूलन है? –

उत्तर

8

आपने कहा:

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

REST यह नहीं कहता कि आप सर्वर पर क्लाइंट डेटा स्टोर नहीं कर सकते हैं; यह सिर्फ कहता है कि आपको एप्लिकेशन स्थिति स्टोर नहीं करना चाहिए, जिसे आप "इस क्लाइंट को करने का प्रयास करने के बीच में क्या है" के रूप में सोच सकते हैं।

यदि आप मुख्य रूप से प्रमाणीकृत उपयोगकर्ताओं की अवधारणा रखने की कोशिश कर रहे हैं, तो एक मानक लॉगिन कुकी ठीक काम करेगी और "अविश्वसनीय" नहीं होगी।

+0

मुझे मिला एकमात्र तार्किक स्पष्टीकरण। उम्मीद है कि यह सही है – GorillaApe

2

यह सब आपके प्रश्न के उत्तर में आता है: आपको पहली जगह "सत्र" अवधारणा की आवश्यकता क्यों है?

यदि आपको यह सुनिश्चित करने की आवश्यकता है कि क्लाइंट क्रेडेंशियल के सेट का प्रतिनिधित्व करने वाली कुकी पास करता है, तो क्लाइंट को इसके बजाय प्रत्येक अनुरोध के साथ HTTPS प्रमाणीकरण शीर्षलेख के रूप में पास करने पर विचार करें।

यदि आपको कुछ चिपचिपा रूटिंग नियमों का पालन करने की आवश्यकता है (यह सुनिश्चित करने के लिए कि ग्राहक का अनुरोध किसी विशेष सर्वर पर भेजा जाता है), इस अवसर का उपयोग उस आर्किटेक्चरल सीधाजैकेट से छुटकारा पाने के लिए करें क्योंकि यह आपके को मारने का सबसे तेज़ तरीका है भविष्य की स्केलेबिलिटी की संभावनाएं। इसके बजाय, अपने सर्वर की पसंद मनमाने ढंग से करें।

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

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