SOAP के साथ वेब सेवा (WS) सुरक्षा का उदाहरण
⚡ स्मार्ट सारांश
वेब सर्विस (WS) सिक्योरिटी एक मानक है जो SOAP वेब सर्विस कॉल के दौरान आदान-प्रदान किए गए डेटा की सुरक्षा करता है। यह संसाधन सुरक्षा खतरों और उनसे निपटने के उपायों, WS-सिक्योरिटी मानकों, क्रेडेंशियल्स के साथ एक सुरक्षित वेब सर्विस बनाने और वेब सर्विस सुरक्षा के सर्वोत्तम तरीकों के बारे में बताता है।
WS सुरक्षा क्या है?
वेब सेवाओं के हिस्से के रूप में डेटा के आदान-प्रदान के दौरान सुरक्षा सुनिश्चित करने के लिए WS Security एक मानक है। SOAP की यह एक प्रमुख विशेषता है जो इसे वेब सेवाएं बनाने के लिए बहुत लोकप्रिय बनाती है।
किसी भी वेब एप्लिकेशन में सुरक्षा एक महत्वपूर्ण विशेषता है। चूंकि लगभग सभी वेब एप्लिकेशन इंटरनेट पर उपलब्ध होते हैं, इसलिए वेब एप्लिकेशन के लिए सुरक्षा खतरे की संभावना हमेशा बनी रहती है। इसलिए, विकास करते समय...ping वेब-आधारित अनुप्रयोगों के मामले में, यह सुनिश्चित करना हमेशा अनुशंसित होता है कि एप्लिकेशन को सुरक्षा को ध्यान में रखते हुए डिजाइन और विकसित किया गया हो।
सुरक्षा खतरे और प्रतिवाद
किसी वेब एप्लिकेशन के लिए हानिकारक सुरक्षा खतरों को समझने के लिए, आइए एक वेब एप्लिकेशन के सरल परिदृश्य को देखें और जानें कि सुरक्षा के मामले में यह कैसे काम करता है।
HTTP के लिए उपलब्ध सुरक्षा उपायों में से एक HTTPS प्रोटोकॉल है। HTTPS वेब पर क्लाइंट और सर्वर के बीच संचार का सुरक्षित तरीका है। HTTPS सुरक्षित संचार के लिए सिक्योर सॉकेट्स लेयर (SSL) का उपयोग करता है। क्लाइंट और सर्वर के बीच किसी भी संचार के दौरान, दोनों के पास अपनी प्रामाणिकता को दर्शाने के लिए एक डिजिटल प्रमाणपत्र होता है।
क्लाइंट और सर्वर के बीच मानक HTTPS संचार में निम्नलिखित चरण होते हैं:
- क्लाइंट, क्लाइंट प्रमाणपत्र के ज़रिए सर्वर को अनुरोध भेजता है। जब सर्वर क्लाइंट प्रमाणपत्र देखता है, तो वह अपने कैश सिस्टम में एक नोट बनाता है ताकि उसे पता चले कि प्रतिक्रिया सिर्फ़ इसी क्लाइंट को वापस जानी चाहिए।
- इसके बाद सर्वर अपना प्रमाणपत्र भेजकर क्लाइंट को खुद को प्रमाणित करता है। इससे यह सुनिश्चित होता है कि क्लाइंट सही सर्वर से संचार कर रहा है।
- इसके बाद क्लाइंट और सर्वर के बीच होने वाला सारा संचार एन्क्रिप्टेड होता है। इससे यह सुनिश्चित होता है कि यदि कोई अन्य उपयोगकर्ता सुरक्षा भंग करके आवश्यक डेटा प्राप्त करने का प्रयास करता है, तो वह उसे पढ़ नहीं पाएगा क्योंकि वह एन्क्रिप्टेड होगा।
लेकिन ऊपर बताई गई सुरक्षा प्रणाली सभी स्थितियों में कारगर नहीं होगी। कभी-कभी ऐसा हो सकता है कि क्लाइंट एक साथ कई सर्वरों से संपर्क करे। नीचे दिए गए उदाहरण में एक क्लाइंट एक ही समय में डेटाबेस और वेब सर्वर दोनों से संपर्क कर रहा है। ऐसे मामलों में, HTTPS प्रोटोकॉल के माध्यम से सारी जानकारी का आदान-प्रदान संभव नहीं होता।
यहीं पर SOAP, WS सुरक्षा विनिर्देश की मदद से ऐसी बाधाओं को दूर करने में सहायक होता है। इस विनिर्देश के साथ, सुरक्षा से संबंधित सभी डेटा SOAP हेडर तत्व में परिभाषित किया जाता है। हेडर तत्व में निम्नलिखित जानकारी शामिल हो सकती है:
- यदि SOAP बॉडी के भीतर संदेश को किसी सुरक्षा कुंजी के साथ हस्ताक्षरित किया गया है, तो उस कुंजी को हेडर तत्व में परिभाषित किया जा सकता है।
- यदि SOAP बॉडी के भीतर कोई भी तत्व एन्क्रिप्टेड है, तो हेडर में आवश्यक एन्क्रिप्शन कुंजी शामिल होगी ताकि संदेश गंतव्य तक पहुंचने पर उसे डिक्रिप्ट किया जा सके।
एक से अधिक सर्वर वाले वातावरण में, SOAP प्रमाणीकरण की उपरोक्त तकनीक निम्नलिखित तरीके से सहायक होती है:
- चूँकि SOAP बॉडी एन्क्रिप्टेड है, इसलिए इसे केवल उस वेब सर्वर द्वारा ही डिक्रिप्ट किया जा सकेगा जो वेब सेवा को होस्ट करता है। ऐसा इसलिए है क्योंकि SOAP प्रोटोकॉल को किस तरह से डिज़ाइन किया गया है।
- मान लीजिए कि संदेश को HTTP अनुरोध के माध्यम से डेटाबेस सर्वर पर भेजा जाता है; इसे डिक्रिप्ट नहीं किया जा सकता क्योंकि डेटाबेस में ऐसा करने के लिए सही तंत्र मौजूद नहीं हैं।
- जब अनुरोध वास्तव में SOAP प्रोटोकॉल के रूप में वेब सर्वर तक पहुंचता है, तभी वह संदेश को समझ पाएगा और क्लाइंट को उचित प्रतिक्रिया वापस भेज पाएगा।
हम आगे के विषयों में देखेंगे कि WS सुरक्षा मानक का उपयोग किस प्रकार किया जा सकता है। सोप.
वेब सेवा सुरक्षा मानक
जैसा कि पिछले अनुभाग में चर्चा की गई है, WS-Security मानक SOAP हेडर में सुरक्षा परिभाषा को शामिल करने पर आधारित है। SOAP हेडर में क्रेडेंशियल्स को 2 तरीकों से प्रबंधित किया जाता है।
सबसे पहले, यह UsernameToken नामक एक विशेष तत्व को परिभाषित करता है। इसका उपयोग वेब सेवा को उपयोगकर्ता नाम और पासवर्ड भेजने के लिए किया जाता है। दूसरा तरीका BinarySecurityToken के माध्यम से बाइनरी टोकन का उपयोग करना है। इसका उपयोग उन स्थितियों में किया जाता है जिनमें Kerberos या X.509 जैसी एन्क्रिप्शन तकनीकों का उपयोग किया जाता है।
नीचे दिया गया आरेख दर्शाता है कि WS Security में सुरक्षा मॉडल किस प्रकार कार्य करता है।
ऊपर दिए गए कार्यप्रवाह में निम्नलिखित चरण शामिल हैं:
- वेब सेवा क्लाइंट से सुरक्षा टोकन सेवा को अनुरोध भेजा जा सकता है। यह सेवा एक मध्यवर्ती वेब सेवा हो सकती है जिसे विशेष रूप से वास्तविक SOAP वेब सेवा को उपयोगकर्ता नाम/पासवर्ड या प्रमाणपत्र प्रदान करने के लिए बनाया गया है।
- इसके बाद सुरक्षा टोकन को वेब सेवा क्लाइंट को भेज दिया जाता है।
- इसके बाद वेब सेवा क्लाइंट वेब सेवा को कॉल करता है, लेकिन इस बार यह सुनिश्चित करते हुए कि सुरक्षा टोकन SOAP संदेश में एम्बेडेड हो।
- वेब सेवा तब प्रमाणीकरण टोकन के साथ SOAP संदेश को समझती है और फिर सुरक्षा टोकन सेवा से संपर्क कर यह देख सकती है कि सुरक्षा टोकन प्रामाणिक है या नहीं।
नीचे दिया गया उदाहरण प्रमाणीकरण भाग का प्रारूप दर्शाता है, जो WSDL दस्तावेज़ का हिस्सा है। इस उदाहरण के आधार पर, SOAP संदेश में दो अतिरिक्त तत्व होंगे, जिनमें से एक उपयोगकर्ता नाम और दूसरा पासवर्ड होगा।
<xs:element name="UsernameToken"> <xs:complexType> <xs:sequence> <xs:element ref="Username"/> <xs:element ref="Password" minOccurs="0"/> </xs:sequence> <xs:attribute name="Id" type="xs:ID"/> </xs:complexType> </xs:element>
जब SOAP संदेश वास्तव में क्लाइंट और सर्वर के बीच भेजा जाता है, तो संदेश का वह भाग जिसमें उपयोगकर्ता क्रेडेंशियल होते हैं, ऊपर दिखाए गए चित्र जैसा दिख सकता है। wsse तत्व नाम SOAP के लिए परिभाषित एक विशेष तत्व नाम है और इसका अर्थ है कि इसमें सुरक्षा-आधारित जानकारी होती है।
सुरक्षित वेब सेवाएँ कैसे बनाएँ
अब आइए SOAP वेब सेवा सुरक्षा का एक उदाहरण देखें। हम SOAP अध्याय में पहले दिखाए गए उदाहरण के आधार पर एक वेब सेवा सुरक्षा प्रणाली बनाएंगे और उसमें एक अतिरिक्त सुरक्षा परत जोड़ेंगे।
हमारे उदाहरण में, हम एक सरल वेब सेवा बनाने जा रहे हैं, जिसका उपयोग वेब सेवा को कॉल करने वाले एप्लिकेशन को एक स्ट्रिंग वापस भेजने के लिए किया जाएगा। लेकिन इस बार, वेब सेवा को कॉल करते समय, क्रेडेंशियल्स को कॉलिंग सेवा को प्रदान करना आवश्यक होगा। आइए नीचे दिए गए चरणों का पालन करके अपनी SOAP वेब सेवा बनाएं और उसमें सुरक्षा परिभाषा जोड़ें।
चरण 1) पहला कदम एक खाली जगह बनाना है एएसपी.नेट वेब अनुप्रयोग। Visual Studio 2013 से, मेनू विकल्प फ़ाइल->नया प्रोजेक्ट पर क्लिक करें।
एक बार जब आप न्यू प्रोजेक्ट विकल्प पर क्लिक करते हैं, तो विजुअल स्टूडियो आपको प्रोजेक्ट का प्रकार चुनने और प्रोजेक्ट के आवश्यक विवरण देने के लिए एक और डायलॉग बॉक्स देगा। इसे अगले चरण में समझाया गया है।
चरण 2) इस चरण में,
- सुनिश्चित करें कि आप पहले चुनें C# ASP.NET वेब एप्लिकेशन के लिए वेब टेम्प्लेट। वेब सेवाओं का प्रोजेक्ट बनाने के लिए प्रोजेक्ट का प्रकार यही होना चाहिए। इस विकल्प को चुनने पर, Visual Studio वेब-आधारित एप्लिकेशन के लिए आवश्यक फाइलों को जोड़ने के लिए आवश्यक कदम उठाएगा।
- अपने प्रोजेक्ट के लिए एक नाम दें जो हमारे मामले में " दिया गया हैवेबसेवा.asmxफिर यह सुनिश्चित करें कि आप वह स्थान बताएं जहां प्रोजेक्ट फाइलें संग्रहीत की जाएंगी।
एक बार यह प्रक्रिया पूरी हो जाने पर, आपको विजुअल स्टूडियो 2013 में अपने सॉल्यूशन एक्सप्लोरर में प्रोजेक्ट फाइल बनती हुई दिखाई देगी।
चरण 3) इस चरण में, हम अपने प्रोजेक्ट में एक वेब सेवा फ़ाइल जोड़ने जा रहे हैं।
- सबसे पहले, नीचे दिखाए अनुसार प्रोजेक्ट फ़ाइल पर राइट-क्लिक करें।
- प्रोजेक्ट फ़ाइल पर राइट-क्लिक करने के बाद, आपको वेब सर्विस फ़ाइल जोड़ने के लिए "Add->Web Service (ASMX)" विकल्प चुनने का मौका मिलेगा। वेब सर्विस फ़ाइल के लिए बस ट्यूटोरियल सर्विस नाम दें।
उपरोक्त चरण के बाद एक डायलॉग बॉक्स खुलेगा, जिसमें आप वेब सेवा फ़ाइल का नाम दर्ज कर सकते हैं। इसलिए नीचे दिए गए डायलॉग बॉक्स में, फ़ाइल नाम के रूप में TutorialService दर्ज करें।
चरण 4) अपनी ट्यूटोरियल सर्विस asmx फ़ाइल में निम्न कोड जोड़ें। कोड का नीचे दिया गया स्निपेट एक कस्टम क्लास जोड़ने के लिए उपयोग किया जाता है जिसका उपयोग SOAP संदेश उत्पन्न होने पर SOAP हेडर को बदलने के लिए किया जाएगा। चूँकि अब हम SOAP हेडर में सुरक्षा क्रेडेंशियल जोड़ना चाहते हैं, इसलिए यह चरण आवश्यक है।
return "This is a Guru99 Web Service"; } public class AuthHeader : SoapHeader { public string UserName; public string Password; } }
Code स्पष्टीकरण:
- अब हम एक अलग क्लास बना रहे हैं जिसका नाम है प्रमाण हेडर जो प्रकार का है सोपहैडर क्लासजब भी आप SOAP हेडर में पास होने वाली जानकारी को बदलना चाहते हैं, तो आपको एक क्लास बनानी होगी जो .Net की अंतर्निहित SoapHeader क्लास का उपयोग करती हो। SOAP हेडर को अनुकूलित करके, अब हम वेब सेवा को कॉल करते समय 'यूजरनेम' और 'पासवर्ड' पास कर सकते हैं।
- फिर हम 'यूजरनेम' और 'पासवर्ड' के वेरिएबल परिभाषित करते हैं जो स्ट्रिंग प्रकार के होते हैं। इनका उपयोग यूजरनेम और पासवर्ड के मानों को रखने के लिए किया जाएगा जो वेब सेवा को पास किए जाते हैं।
चरण 5) अगले चरण के रूप में, निम्नलिखित कोड को उसी में जोड़ना होगा TutorialService.asmx फ़ाइलयह कोड वास्तव में हमारी वेब सेवा के फ़ंक्शन को परिभाषित करता है। यह फ़ंक्शन "This is a" नामक एक स्ट्रिंग लौटाता है। Guruक्लाइंट को "99 वेब सेवा" भेजा जाएगा। लेकिन इस बार, स्ट्रिंग तभी वापस की जाएगी जब क्लाइंट एप्लिकेशन वेब सेवा को क्रेडेंशियल पास करेगा।
public class TutorialService : System.Web.Services.WebService { public AuthHeader Credentials; [SoapHeader("Credentials")] [WebMethod] public string Guru99WebService() { if (Credentials.UserName.ToLower() != "Guru99" || Credentials.Password.ToLower() != "Guru99Password") { throw new SoapException("Unauthorized", SoapException.ClientFaultCode); } else return "This is a Guru99 Web service"; }
Code स्पष्टीकरण:
- यहाँ, हम AuthHeader क्लास का एक ऑब्जेक्ट बना रहे हैं जिसे पहले चरण में बनाया गया था। यह ऑब्जेक्ट हमारे पास भेजा जाएगा Guru99वेबसेवा जिसमें यूजरनेम और पासवर्ड की बारीकी से जांच की जा सकेगी।
- [SoapHeader] विशेषता का उपयोग अब यह निर्दिष्ट करने के लिए किया जाता है कि जब वेब सेवा को कॉल किया जाता है, तो उसे उपयोगकर्ता नाम और पासवर्ड पास करना आवश्यक होता है।
- कोड के इस ब्लॉक में, हम वास्तव में वेब सेवा को कॉल करते समय पास किए गए उपयोगकर्ता नाम और पासवर्ड की जांच कर रहे हैं। यदि उपयोगकर्ता नाम " के बराबर हैGuru99” और पासवर्ड “ के बराबर हैGuru99Password”, फिर “यह एक है” संदेश Guruयदि गलत यूजर आईडी और पासवर्ड दर्ज किए जाते हैं तो क्लाइंट को "99 वेब सेवा" भेजी जाएगी। अन्यथा, क्लाइंट को एक त्रुटि संदेश भेजा जाएगा।
यदि कोड सफलतापूर्वक निष्पादित हो जाता है, तो जब आप अपना कोड ब्राउज़र में चलाएंगे तो निम्नलिखित आउटपुट दिखाया जाएगा।
आउटपुट:
प्रोग्राम चलाने पर ऊपर दिया गया आउटपुट दिखाई देता है, जिसका अर्थ है कि वेब सेवा अब उपलब्ध है। आइए सेवा पर क्लिक करें। Descriptआयन लिंक.
सेवा विवरण से, अब आप देख पाएंगे कि उपयोगकर्ता नाम और पासवर्ड इसके तत्व हैं डबल्यूएसडीएल फ़ाइल. वेब सेवा लागू होने पर इन मापदंडों को भेजने की आवश्यकता होती है.
वेब सेवा सुरक्षा सर्वोत्तम अभ्यास
वेब सेवाओं के साथ काम करते समय निम्नलिखित सुरक्षा संबंधी बातों का ध्यान रखना चाहिए:
- ऑडिटिंग और लॉग प्रबंधन वेब सेवाओं पर आने वाले सभी अनुरोधों को लॉग करने के लिए एप्लिकेशन लॉगिंग का उपयोग करें। इससे यह विस्तृत रिपोर्ट मिलती है कि वेब सेवा का उपयोग किसने किया है और किसी भी सुरक्षा उल्लंघन की स्थिति में प्रभाव विश्लेषण में मदद मिल सकती है।
- वेब सेवा पर आने वाली कॉलों का प्रवाह वेब सेवाओं में कॉल के प्रवाह पर ध्यान देने का प्रयास करें। डिफ़ॉल्ट रूप से, एक एप्लिकेशन कई वेब सेवा अनुरोधों को कॉल कर सकता है, जिनके बीच प्रमाणीकरण टोकन पास किए जाते हैं। वेब सेवाओं के बीच होने वाले सभी कॉलों की निगरानी और लॉगिंग करना आवश्यक है।
- संवेदनशील जानकारी – अपने लॉग एंट्री में पासवर्ड, क्रेडिट कार्ड नंबर या कोई अन्य गोपनीय जानकारी जैसी संवेदनशील जानकारी शामिल न करें। यदि किसी इवेंट में ऐसी कोई जानकारी है, तो लॉगिंग से पहले उसे हटा देना आवश्यक है।
- Tracके व्यवसाय Operaमाहौल - Tracमहत्वपूर्ण व्यावसायिक कार्यों के लिए, अपने एप्लिकेशन को इस तरह से तैयार करें कि वह विशेष रूप से संवेदनशील विधियों और व्यावसायिक तर्क तक पहुंच को रिकॉर्ड कर सके। एक ऑनलाइन दुकान का उदाहरण लें।ping एप्लिकेशन। एक सामान्य एप्लिकेशन में कई चरण होते हैं, जैसे कि खरीदी जाने वाली वस्तुओं का चयन, कार्ट में वस्तुओं का लोड होना और फिर अंतिम खरीदारी। इस संपूर्ण व्यावसायिक कार्यप्रणाली को व्यवस्थित करने की आवश्यकता है। tracवेब सेवा द्वारा खोजा गया।
- उचित प्रमाणीकरण – प्रमाणीकरण वह तंत्र है जिसके द्वारा क्लाइंट कुछ निश्चित क्रेडेंशियल्स का उपयोग करके वेब सेवा के साथ अपनी पहचान स्थापित कर सकते हैं। उपयोगकर्ता क्रेडेंशियल्स को कभी भी संग्रहीत नहीं किया जाना चाहिए, और इसलिए, यदि वेब सेवा को कॉल करने के लिए WS Security का उपयोग किया जाता है, तो यह ध्यान रखना आवश्यक है कि वेब सेवा SOAP हेडर में भेजे गए क्रेडेंशियल्स को संग्रहीत न करे। इन्हें वेब सेवा द्वारा हटा दिया जाना चाहिए।














