2009-10-23 19 views
6

मैं एक विश्वसनीय वेब सेवा (जेबॉस + रीस्टेसी) की तलाश कर रहा हूं। यूआई प्रोग्रामर एक अजाक्स वेब ऐप लिख रहा है जो इसका इस्तेमाल करेगा। वेब ऐप जावास्क्रिप्ट में किए गए सब कुछ के साथ एक HTML पृष्ठ होगा। सुरक्षा के लिए, सभी यातायात एसएसएल के माध्यम से चला जाता है।ब्राउज़र पॉप अप लॉगिन संवाद के बिना अजाक्स प्रमाणीकरण

वर्तमान में मैं मूल प्रमाणीकरण का उपयोग कर रहा हूं। यूआई प्रोग्रामर उपयोगकर्ता नाम और पासवर्ड प्राप्त करने के लिए एक संवाद दिखा सकता है और शीर्षलेख में "प्रमाणीकरण: मूल XXXXX" डाल सकता है। दुर्भाग्य से यदि पासवर्ड गलत है, तो बदसूरत ब्राउज़र लॉगिन संवाद बॉक्स आता है। इसके अलावा उपयोगकर्ता को लॉग ऑफ करने का कोई तरीका नहीं है। यह अस्वीकार्य है।

हमारे द्वारा उपयोग किए जाने वाले किसी भी ब्राउज़र में XMLHttpRequest को 401 प्रतिक्रिया को रोकने का कोई तरीका नहीं है।

फॉर्म-आधारित प्रमाणीकरण हमारे लिए काम नहीं करेगा। निष्क्रियता की कुछ अवधि (सत्र समय समाप्ति के समतुल्य) के बाद हमें स्वचालित लॉगऑफ की आवश्यकता होती है। जब ग्राहक किसी JSON ऑब्जेक्ट की अपेक्षा करता है तो सर्वर अचानक सर्वर लॉगिन नहीं कर सकता है।

जेबॉस चार प्रमाणीकरण रणनीतियों की पेशकश करता है: बेसिक, फॉर्म, क्लाइंट-सीईआरटी और डीआईजीईटी। मुझे लगता है कि डीआईजीईटी के पास बेसिक जैसी ही समस्या है। चार में से कोई भी हम चाहते हैं।

यह वेब एप्लिकेशन एकमात्र ग्राहक होगा (अभी के लिए) इसलिए बेसिक का उपयोग करने की कोई आवश्यकता नहीं है। क्या कोई अन्य प्रमाणीकरण रणनीति स्थापित हो सकती है? उदाहरण के लिए WSSE उपयोगकर्ता नाम टोकन का कार्यान्वयन है जिसका उपयोग मैं कर सकता हूं? (जैसा कि ओ'रेली रीस्टफुल वेब सर्विसेज बुक के अध्याय 8 में वर्णित है।) सर्वर डब्ल्यूडब्ल्यूडब्ल्यू-प्रमाणीकरण शीर्षलेख में "बेसिक" के बजाय "डब्लूएसएसई" भेज देगा और संभवतः ब्राउज़र इसे अनदेखा कर देगा और इसे सही तरीके से पास करेगा।

मैं सुरक्षा को कॉन्फ़िगर करना चाहता हूं जहां यह संबंधित है - जेबॉस कॉन्फ़िगरेशन फ़ाइलों में, मेरी रीस्टफुल वेब सेवा में नहीं - इसलिए मैं एक कार्यान्वयन की तलाश में हूं, मैं सिर्फ जेबॉस में प्लग कर सकता हूं।

उत्तर

7

यदि ब्राउज़र WWW- प्रमाणीकरण शीर्षलेख में प्रमाणीकरण योजना को पहचान नहीं लेता है तो ब्राउज़र पासवर्ड संवाद नहीं पेश करेगा। 401 प्रतिक्रियाओं के लिए "बेसिक/माईएप" जैसे किसी चीज़ पर मैन्युअल रूप से शीर्षलेख सेट करते समय सर्वर पर मूल ऑथ का उपयोग करना जारी रखने के लिए आपकी सबसे अच्छी शर्त हो सकती है।

+0

अनुरोध वेब सेवा तक पहुंचने से पहले प्रमाणीकरण किया जाता है। क्या मैं सुरक्षा फ्रेमवर्क के सामने बैठे एक फ़िल्टर को लिखकर इसे संभाल सकता हूं? फिर मैं वेब प्रोग्रामर को पहले अनुरोध के लिए "प्रमाणीकरण: बेसिक/माईएप" शीर्षलेख जोड़ने के लिए कह सकता था। फ़िल्टर फिर इसे "प्रमाणीकरण: बेसिक" के रूप में फिर से लिख सकता है और प्रतिक्रिया में "डब्ल्यूडब्ल्यूडब्लू-प्रमाणीकरण: बेसिक" हेडर को फिर से लिख सकता है "डब्ल्यूडब्ल्यूडब्ल्यू-प्रमाणीकरण: बेसिक/माईएप"। कोई अन्य ग्राहक सामान्य बेसिक प्रमाणीकरण का उपयोग कर सकता है। यह काम करेगा? मुझे लगता है कि यह हो सकता है। –

+0

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

+0

जैसा कि यह पता चला है, आपके पास प्री-लॉगिन फ़िल्टर नहीं हो सकता है। वेबलॉगिक सर्वर इसे अनुमति देता है, लेकिन मानक इसे अनुमति नहीं देता है और जेबॉस और टॉमकैट इसे अनुमति नहीं देते हैं। ऐसा लगता है कि ऐसा करने के लिए मुझे जेएएएस के साथ परेशान होना होगा। –

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