2015-03-22 9 views
9

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

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

तो मैंने जेडब्ल्यूटी को देखा, उदाहरण के लिए http://angular-tips.com/blog/2014/05/json-web-tokens-introduction/ और https://auth0.com/blog/2014/01/07/angularjs-authentication-with-cookies-vs-token/, और मैं यह देखने में असफल रहा कि कुकीज की तुलना में यह महत्वपूर्ण क्यों बेहतर है (या उससे भी अलग), और अधिक विशेष रूप से, यह देशी मोबाइल ऐप्स में बेहतर क्यों होता है। ऐसा लगता है कि, कम से कम आईओएस, कुकीज़ को ठीक से संभालता है (Persisting Cookies In An iOS Application?)।

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

+1

कम से कम एक महत्वपूर्ण अंतर है। आपको लोड बैलेंसर के पीछे बैठे ऑटो-स्केलिंग वेब-ऐप्स (सर्वर) पर विचार करना चाहिए। जब तक आपके पास कुछ ऐप-वाइड सत्र हैंडलिंग सेट नहीं है ("ग्लोबल" कोकी स्टोरेज ...) यह हो सकता है कि प्रमाणीकरण और कुछ पहले अनुरोध एक सर्वर पर जाएं और फिर दूसरा अनुरोध दूसरे सर्वर पर भेजा जाता है - बिना प्रमाणीकृत सत्र। इस स्थिति को दूर करने का एक तरीका जेडब्ल्यूटी है। –

+0

@rokjarc, इसे इंगित करने के लिए धन्यवाद। मैं सत्र प्रबंधन के लिए एक केंद्रीय स्टोर के रूप में रेडिस का उपयोग कर रहा हूं, और यह आजकल एक आदर्श मानता है। लेकिन मैं आपकी बात देखता हूँ। – skyork

+0

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

उत्तर

3

हम सॉफ्टवेयर डेवलपर्स (कभी-कभी) हर जगह नई गर्म चीज़ को लागू करने की प्रवृत्ति रखते हैं; यह संभवतः कहने का एक भिन्नता है यदि हमारे पास एक हथौड़ा है, तो सब कुछ एक नाखून जैसा दिखता है, जहां इस मामले में हम इस नई चीज़ का उपयोग करने के लिए एक बेताब आग्रह महसूस करते हैं जिसके बारे में हमने सीखा।

इस तुलना के बारे में एक दिलचस्प बात यह है कि न तो JWT या कुकीज़ वास्तव में प्रमाणीकरण तंत्र हैं; पहला सिर्फ token format परिभाषित करता है और दूसरा HTTP state management mechanism है। केवल यह एक संकेत देने के लिए पर्याप्त है कि एक दूसरे की तुलना में बेहतर है कि यह गलत है।

यह सच है हालांकि दोनों का प्रमाणीकरण सिस्टम में काफी उपयोग किया जाता है।

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

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

मुझे लगता है कि यही कारण है कि हम संभवतः तर्क दे सकते हैं कि टोकन आधारित प्रमाणीकरण मूल मोबाइल अनुप्रयोगों के लिए अधिक समझ में आता है। ये एप्लिकेशन आम तौर पर सर्वर-साइड वेब एपीआई पर निर्भर करते हैं और हमने देखा है कि अगर एपीआई टोकन का समर्थन करता है तो यह उन ग्राहकों की सीमा को बढ़ाएगा जो इसका उपयोग कर सकते हैं, इसलिए यह केवल सबसे व्यावहारिक बात है।

निष्कर्ष निकालने और अपने ठोस प्रश्न का उत्तर देने का प्रयास करने के लिए, मैं कहूंगा कि जेडब्ल्यूटी के मूल मोबाइल अनुप्रयोगों पर कुकीज़ पर लाभ होता है क्योंकि वास्तव में वे बहुत आम उपयोग में हैं, इसका मतलब है कि अधिक सीखने के संसाधन, एसडीके, ज्ञात नुकसान (ज्यादातर क्योंकि किसी और ने पहले से ही यह किया है और असफल), आदि

फिर भी, केवल उन्हें उपयोग करें यदि वे आपको आवश्यक सुरक्षा आश्वासन देते हैं और आपके परिदृश्य को सरल बनाते हैं। यदि आप पहले से ही नहीं गए हैं, तो मुझे लगता है कि आप Cookies vs Tokens: The Definitive Guide की भी सराहना करेंगे।

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