2009-05-06 14 views
13

मैंने एक साधारण .NET webservice लिखा है, जिसे मैं एक अलग सर्वर पर होस्ट किया जाएगा, विभिन्न महाद्वीप पर हो सकता है। मैं वास्तव में नहीं जानता। अब, मेरे पास केवल यूआरएल था और मैंने उस वेब सेवा वाई HTTP पोस्ट तक पहुंचने के लिए वेबरेक्वेस्ट और वेबस्पॉन्स विधि का उपयोग करने की कोशिश की। अब, मैं जानना चाहता हूं कि webservice एक्सेस को सुरक्षित करने का कोई तरीका है, ताकि कोई इसका शोषण न कर सके?.net में webservice को सुरक्षित करने के लिए कैसे?

उदाहरण के लिए

:

http://example.com/Verify/Verification.asmx/Verify?AccountNumber=3223&ProductName=876

अब, इन सभी इस वेब सेवा कॉल करने के लिए आवश्यक पैरामीटर है। जैसा कि अब, कोई भी इसका फायदा उठा सकता है। तो मैं इसे कैसे सुरक्षित कर सकता हूं? हालांकि, मैं एसएसएल प्राप्त करने की योजना बना रहा हूं और यह पूरी बात सर्वर से सर्वर पर हो रही है, क्लाइंट से सर्वर तक नहीं?

+0

हर किसी को धन्यवाद .. हैप्पी कोडिंग। – Mohit

उत्तर

9

आप वेब अनुरोध के प्राधिकरण शीर्षलेख में एक सेवा कुंजी (अमेज़ॅन डब्ल्यूएस की तरह) पास कर सकते हैं जिसे आपकी पसंद के एल्गोरिदम के साथ एन्क्रिप्ट किया जा सकता है, जिसे सेवा अंत में डिक्रिप्ट किया जाता है और केवल निष्पादन के साथ जारी रहता है कुंजी निम्न URL

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

+0

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

+1

मेरा मानना ​​है कि आपको सर्वर संचार के लिए सर्वर के लिए एक एसएसएल प्रमाणपत्र भी चाहिए। एन्क्रिप्टेड प्राधिकरण शीर्षलेख के साथ जोड़ा गया आपको –

1

दुर्भाग्य में

देखें खंड 14.8 से मेल खाता है, तो आप कई विकल्प के बाद से आप पुराने ASMX वेब सेवा प्रौद्योगिकी का उपयोग किया है नहीं है। इंटरनेट पर एएसएमएक्स वेब सेवाओं के साथ किसी को प्रमाणीकृत करने का एकमात्र तरीका मूल रूप से "इसे स्वयं करें" की राशि है।

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

+0

डब्ल्यूसीएफ की आवश्यकता होनी चाहिए ... मुझे लगता है कि मैं उस पर एक नज़र डाल सकता हूं। लेकिन फिर भी मुझे केवल यूआरएल के माध्यम से इसका उपयोग करने की ज़रूरत है, यह मेरी सीमा है। यदि आपसे हो सके तो कृपया मेरी मदद करें। कोई भी लिंक पर्याप्त होगा। धन्यवाद। – Mohit

+0

एमएसडीएन पर डब्ल्यूसीएफ डेवलपर सेंटर http://msdn.microsoft.com/WCF/ पर है। सभी नए वेब सेवा विकास के लिए एएसएमएक्स के बजाय डब्ल्यूसीएफ का इस्तेमाल किया जाना चाहिए। –

1

आमतौर पर डब्ल्यूसीएफ माइक्रोसॉफ्ट के Web Service Extensions (WSE), संस्करण 3.0 पर, पहले .NET वेब सेवाओं को सुरक्षित करने के लिए उपयोग किया जाता था। मैंने इसे वाणिज्यिक रूप से उपलब्ध उत्पाद में सफलतापूर्वक उपयोग किया है, और यह बेहतर है क्योंकि यह डब्ल्यू 3 सी ws- * मानकों पर आधारित है। यदि आप अपाचे एक्सिस का उपयोग करते हैं तो .NET क्लाइंट (जाहिर है) से जावा क्लाइंट से सफलतापूर्वक इंटरऑपरेट करना संभव है।

http://www.microsoft.com/downloads/details.aspx?FamilyID=018a09fd-3a74-43c5-8ec1-8d789091255d&displaylang=en

+0

मैं डब्लूएसई के बारे में भी _thinking_ के खिलाफ दृढ़ता से अनुशंसा करता हूं! डब्लूएसई काफी अप्रचलित है, जिसे डब्ल्यूसीएफ द्वारा प्रतिस्थापित किया गया है। डब्ल्यूएसई का प्रयोग न करें जब तक कि आपके पास कोई विकल्प न हो। –

+3

यही कारण है कि मैंने लिखा/पहले/डब्ल्यूसीएफ ... मूल प्रश्न पारंपरिक .NET वेब सेवाओं को संदर्भित करता है। बेशक अगर कोई विकल्प है तो मैं डब्ल्यूसीएफ की भी सिफारिश करूंगा। –

+0

बस _please_ डब्लूएसई का जिक्र करने के बारे में सावधान रहें - क्या होगा अगर इसे पढ़ने वाले किसी ने इसे _use_ करने का निर्णय लिया है? यही कारण है कि मैंने इसे इतनी कठोर शर्तों में रखा - "केवल तभी यदि आपके पास कोई अन्य विकल्प नहीं है"। मैं इसका उपयोग करने वाले किसी को मौका नहीं देना चाहता क्योंकि "यह .ASMX फ़ाइलों का उपयोग करता है" या "डब्ल्यूसीएफ बहुत उन्नत है" या ऐसा कुछ भी। डब्लूएसई अप्रचलित है, और कम से कम किसी भी परियोजना पर नहीं, इसका उपयोग नहीं किया जाना चाहिए। –

0

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

कुछ विचार GUID की एक सूची की तरह कुछ सरल हैं जो अनुरोध करने वाले सर्वर आईपी पते के एन्क्रिप्शन के लिए स्वीकार्य पास कुंजी हैं ताकि प्रमाणीकरण कोड केवल वेब सेवा द्वारा सत्यापित उस आईपी पते के साथ काम करता हो।

+0

बहुत अच्छा .. सुझाव के लिए धन्यवाद .. लेकिन जैसा कि अन्य लोगों ने कहा, मैं भी डब्ल्यूसीएफ का उपयोग करने की कोशिश करूंगा और देख सकता हूं कि यह मुझे लाभान्वित करता है या नहीं। अन्यथा, मैं हमेशा आपके सुझाव का उपयोग कर सकता हूं। धन्यवाद। – Mohit

0

आप एक टोकन भी बना सकते हैं और इस वेबकेड को पैरामीटर के रूप में इस टोकनिड को पास कर सकते हैं। आप हैशटेबल में टोकन को बनाए रख सकते हैं और सत्र छोड़ने के बाद हैशटेबल से हटा सकते हैं।

टोकन सफल लॉगिन पर उत्पन्न होने की आवश्यकता है। टोकन आईडी उत्पन्न करने के लिए, मैं RNGCryptoServiceProvider का उपयोग करने की सलाह देता हूं।

+0

आपने कहा: आप एक टोकन भी बना सकते हैं और इस वेबकेड को पैरामीटर के रूप में इस टोकनिड को पास कर सकते हैं। यदि मैं प्रत्येक अनुरोध के साथ टोकन पास करने के लिए अपनी मार्गदर्शिका रेखा का पालन करता हूं तो मैं उत्तर संलग्नक को कैसे रोक सकता हूं। हमलावर भी उन टोकन को पकड़ लेता है और अनुरोध भेजता है। मेरा मार्गदर्शन करो। धन्यवाद – Mou

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