वेब सेवा (WS) SOAP उदाहरण के साथ सुरक्षा ट्यूटोरियल

विषय - सूची:

Anonim

WS सुरक्षा क्या है?

WS सुरक्षा एक मानक है जो वेब सेवा के भाग के रूप में डेटा का आदान-प्रदान करने पर सुरक्षा को संबोधित करता है। SOAP में यह एक प्रमुख विशेषता है जो वेब सेवाओं को बनाने के लिए इसे बहुत लोकप्रिय बनाता है।

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

इस ट्यूटोरियल में, आप सीखेंगे-

  • सुरक्षा खतरे और प्रतिवाद
  • वेब सेवा सुरक्षा मानक
  • सुरक्षित वेब सेवाओं का निर्माण कैसे करें
  • वेब सेवा सुरक्षा सर्वोत्तम अभ्यास

सुरक्षा खतरे और प्रतिवाद

सुरक्षा खतरों को समझने के लिए जो वेब एप्लिकेशन के लिए शत्रुतापूर्ण हो सकते हैं, आइए एक वेब एप्लिकेशन के सरल परिदृश्य को देखें और देखें कि यह सुरक्षा के संदर्भ में कैसे काम करता है।

HTTP के लिए उपलब्ध सुरक्षा उपायों में से एक HTTPS प्रोटोकॉल है। HTTPS वेब पर क्लाइंट और सर्वर के बीच संचार का सुरक्षित तरीका है। HTTPS सुरक्षित संचार के लिए सुरक्षित सॉकेट लेयर या SSL का उपयोग करता है। क्लाइंट और सर्वर दोनों के पास स्वयं को वास्तविक रूप में पहचानने के लिए एक डिजिटल प्रमाणपत्र होगा, जब क्लाइंट और सर्वर के बीच कोई संचार होता है।

क्लाइंट और सर्वर के बीच एक मानक HTTPS संचार में, निम्न चरण होते हैं

  1. क्लाइंट क्लाइंट प्रमाणपत्र के माध्यम से सर्वर को एक अनुरोध भेजता है। जब सर्वर क्लाइंट सर्टिफिकेट देखता है, तो वह अपने कैश सिस्टम में एक नोट बनाता है ताकि यह पता चले कि प्रतिक्रिया केवल इस क्लाइंट को वापस जानी चाहिए।
  2. सर्वर तब अपने प्रमाण पत्र भेजकर ग्राहक को प्रमाणित करता है। यह सुनिश्चित करता है कि क्लाइंट सही सर्वर के साथ संचार कर रहा है।
  3. इसके बाद क्लाइंट और सर्वर के बीच सभी संचार एन्क्रिप्ट किए जाते हैं। यह सुनिश्चित करता है कि यदि कोई अन्य उपयोगकर्ता सुरक्षा को तोड़ने और आवश्यक डेटा प्राप्त करने का प्रयास करता है, तो वे इसे पढ़ नहीं पाएंगे क्योंकि यह एन्क्रिप्ट किया जाएगा।

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

यह वह जगह है जहाँ एसओएपी ऐसी बाधाओं को दूर करने के लिए एक्शन में आता है जिसमें डब्ल्यूएस सिक्योरिटी स्पेसिफिकेशन होता है। इस विनिर्देशन के साथ, सभी सुरक्षा संबंधी डेटा SOAP हेडर तत्व में परिभाषित होते हैं।

हेडर तत्व में नीचे दी गई जानकारी हो सकती है

  1. यदि SOAP निकाय के भीतर किसी भी सुरक्षा कुंजी के साथ संदेश पर हस्ताक्षर किए गए हैं, तो उस कुंजी को हेडर तत्व में परिभाषित किया जा सकता है।
  2. यदि SOAP बॉडी के भीतर किसी भी तत्व को एन्क्रिप्ट किया गया है, तो हेडर में आवश्यक एन्क्रिप्ट कीज़ होंगी, ताकि गंतव्य पर पहुंचने पर संदेश को डिक्रिप्ट किया जा सके।

एक एकाधिक सर्वर वातावरण में, SOAP प्रमाणीकरण की उपरोक्त तकनीक निम्नलिखित तरीके से मदद करती है।

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

हम बाद के विषयों में देखेंगे कि कैसे एसओएपी के लिए डब्ल्यूएस सुरक्षा मानक का उपयोग किया जा सकता है।

वेब सेवा सुरक्षा मानक

जैसा कि पहले खंड में चर्चा की गई थी, WS- सुरक्षा मानक SOAP हैडर में शामिल सुरक्षा परिभाषा के आसपास घूमता है।

SOAP हेडर में क्रेडेंशियल्स 2 तरीकों से प्रबंधित किया जाता है।

सबसे पहले, यह UsernameToken नामक एक विशेष तत्व को परिभाषित करता है। इसका उपयोग वेब सेवा के लिए उपयोगकर्ता नाम और पासवर्ड पारित करने के लिए किया जाता है।

दूसरा तरीका है बाइनरी सेक्योरिटीटोकन के माध्यम से एक बाइनरी टोकन का उपयोग करना। यह उन स्थितियों में उपयोग किया जाता है जिसमें एन्क्रिप्शन तकनीक जैसे कि केर्बरोस या एक्स 509 का उपयोग किया जाता है।

नीचे दिए गए आरेख से पता चलता है कि WS सुरक्षा में सुरक्षा मॉडल कैसे काम करता है

ऊपर दिए गए वर्कफ़्लो में नीचे दिए गए चरण हैं

  1. वेब सेवा क्लाइंट से सुरक्षा टोकन सेवा के लिए अनुरोध भेजा जा सकता है। यह सेवा एक मध्यवर्ती वेब सेवा हो सकती है जो विशेष रूप से वास्तविक SOAP वेब सेवा के लिए उपयोगकर्ता नाम / पासवर्ड या प्रमाणपत्र प्रदान करने के लिए बनाई गई है।
  2. सुरक्षा टोकन को तब वेब सेवा क्लाइंट को दिया जाता है।
  3. वेब सेवा क्लाइंट ने तब वेब सेवा को कॉल किया, लेकिन, इस बार, यह सुनिश्चित करते हुए कि सुरक्षा टोकन SOAP संदेश में एम्बेडेड है।
  4. वेब सेवा फिर प्रमाणीकरण टोकन के साथ SOAP संदेश को समझती है और फिर सुरक्षा टोकन सेवा को देखने के लिए संपर्क कर सकती है कि सुरक्षा टोकन प्रामाणिक है या नहीं।

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

जब SOAP संदेश वास्तव में क्लाइंट और सर्वर के बीच पारित हो जाता है, तो उस संदेश का हिस्सा जिसमें उपयोगकर्ता क्रेडेंशियल्स होते हैं, ऊपर दिखाए गए जैसे दिख सकता है। Wsse तत्व नाम SOAP के लिए परिभाषित एक विशेष तत्व है और इसका मतलब है कि इसमें सुरक्षा आधारित जानकारी है।

सुरक्षित वेब सेवाओं का निर्माण कैसे करें

अब SOAP वेब सेवा सुरक्षा उदाहरण देखें। हम SOAP अध्याय में पहले प्रदर्शित उदाहरण पर एक वेब सेवा सुरक्षा बनाएंगे और इसमें एक सुरक्षा परत जोड़ेंगे।

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

चरण 1) पहला कदम एक खाली Asp.Net वेब अनुप्रयोग बनाना है। Visual Studio 2013 से, मेनू विकल्प File-> नई परियोजना पर क्लिक करें।

एक बार जब आप नए प्रोजेक्ट विकल्प पर क्लिक करते हैं, तो विज़ुअल स्टूडियो तब आपको प्रोजेक्ट का प्रकार चुनने और प्रोजेक्ट के आवश्यक विवरण देने के लिए एक और डायलॉग बॉक्स देगा। यह अगले चरण में बताया गया है

चरण 2) इस चरण में,

  1. सुनिश्चित करें कि आप पहले ASP.NET वेब अनुप्रयोग के लिए C # वेब टेम्पलेट चुनते हैं। वेब सेवा परियोजना बनाने के लिए परियोजना को इस प्रकार का होना चाहिए। इस विकल्प को चुनकर, विजुअल स्टूडियो आवश्यक फ़ाइलों को जोड़ने के लिए आवश्यक कदम उठाएगा, जो किसी भी वेब-आधारित एप्लिकेशन द्वारा आवश्यक हैं।
  2. अपनी परियोजना के लिए एक नाम दें जो हमारे मामले में " webservice.asmx " के रूप में दिया गया है फिर एक स्थान देना सुनिश्चित करें, जहां परियोजना फाइलों को संग्रहीत किया जाएगा।

एक बार जब आप दृश्य स्टूडियो 2013 में अपने समाधान एक्सप्लोरर में बनाई गई परियोजना फ़ाइल देखेंगे।

चरण 3) इस चरण में,

हम अपने प्रोजेक्ट में एक वेब सेवा फ़ाइल जोड़ने जा रहे हैं

  1. पहले प्रोजेक्ट फ़ाइल पर राइट-क्लिक करें जैसा कि नीचे दिखाया गया है
  1. एक बार जब आप प्रोजेक्ट फ़ाइल पर राइट-क्लिक करते हैं, तो आपके पास एक वेब सेवा फ़ाइल जोड़ने के लिए विकल्प "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;}}

कोड स्पष्टीकरण: -

  1. अब हम एक अलग वर्ग बना रहे हैं, जिसे AuthHeader कहा जाता है, जो SoapHeader वर्ग का है । जब भी आप SOAP हैडर में पास होने वाले को बदलना चाहते हैं, तो किसी को एक वर्ग बनाने की जरूरत होती है, जो इन-बिल्ट के इन-सोपहेडर क्लास का उपयोग करता है। SOAPheader को कस्टमाइज़ करके, अब हमारे पास वेब सेवा कहे जाने पर 'उपयोगकर्ता नाम' और 'पासवर्ड' पास करने की क्षमता है।
  2. इसके बाद हम 'यूजरनेम' और 'पासवर्ड' के वैरिएबल को परिभाषित करते हैं जो टाइप स्ट्रिंग के होते हैं। उनका उपयोग उपयोगकर्ता नाम और पासवर्ड के मूल्यों को रखने के लिए किया जाएगा जो वेब सेवा में पारित किए जाते हैं।

चरण 5) अगले चरण के रूप में, निम्न कोड को एक ही TutorialService.asmx फ़ाइल में जोड़ा जाना चाहिए । यह कोड वास्तव में हमारी वेब सेवा के कार्य को परिभाषित करता है। यह फ़ंक्शन क्लाइंट के लिए एक स्ट्रिंग "यह एक गुरु 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);}eisereturn "This is a Guru99 Web service";}

कोड स्पष्टीकरण: -

  1. यहाँ, हम AuthHeader वर्ग का एक ऑब्जेक्ट बना रहे हैं जो पहले चरण में बनाया गया था। यह ऑब्जेक्ट हमारे गुरु 99 वेबसर्विस को दिया जाएगा जिसमें उपयोगकर्ता नाम और पासवर्ड की बारीकी से जांच की जा सकती है।
  2. [SoapHeader] विशेषता का उपयोग अब यह निर्दिष्ट करने के लिए किया जाता है कि जब वेब सेवा कहा जाता है, तो इसके लिए उपयोगकर्ता का नाम और पासवर्ड पास होना आवश्यक है।
  3. कोड के इस ब्लॉक में, हम वास्तव में उपयोगकर्ता नाम और पासवर्ड की जांच कर रहे हैं जब वेब सेवा कहा जाता है। यदि उपयोगकर्ता नाम "Guru99" के बराबर है और पासवर्ड "Guru99Password" के बराबर है, तो क्लाइंट के लिए "यह एक गुरु99 वेब सेवा है" का संदेश दिया गया है। गलत उपयोगकर्ता आईडी और पासवर्ड पारित होने पर ग्राहक को एक त्रुटि भेजी जाएगी।

यदि कोड सफलतापूर्वक निष्पादित किया जाता है, तो ब्राउज़र में अपना कोड चलाते समय निम्न आउटपुट दिखाया जाएगा।

आउटपुट:

जब प्रोग्राम चलाया जाता है, तो उपरोक्त आउटपुट दिखाया जाता है, जिसका अर्थ है कि वेब सेवा अब उपलब्ध है। सेवा विवरण लिंक पर क्लिक करें।

सेवा विवरण से, अब आप देख पाएंगे कि उपयोगकर्ता नाम और पासवर्ड WSDL फ़ाइल के तत्व हैं। इन मापदंडों को वेब सेवा के आह्वान पर भेजे जाने की आवश्यकता है।

वेब सेवा सुरक्षा सर्वोत्तम अभ्यास

निम्नलिखित सुरक्षा विचार हैं जिन्हें वेब सेवाओं के साथ काम करते समय ध्यान दिया जाना चाहिए

  1. लेखा परीक्षा और लॉग प्रबंधन - वेब सेवाओं के लिए आने वाले सभी अनुरोधों को लॉग करने के लिए एप्लिकेशन लॉगिंग का उपयोग करें। यह एक विस्तृत रिपोर्ट देता है कि किसने वेब सेवा का आह्वान किया है और कोई सुरक्षा भंग होने पर इम्पैक्ट विश्लेषण में मदद कर सकता है।

  2. वेब सेवा के लिए कॉल का प्रवाह - वेब सेवाओं में कॉल के प्रवाह को नोट करने का प्रयास करें। डिफ़ॉल्ट रूप से, एक एप्लिकेशन इन वेब सेवाओं के बीच पारित प्रमाणीकरण टोकन के साथ कई वेब सेवाओं के अनुरोध को कॉल कर सकता है। वेब सेवाओं के बीच सभी कॉल पर नजर रखने और लॉग इन करने की आवश्यकता है।

  3. संवेदनशील जानकारी - अपनी लॉग प्रविष्टियों जैसे पासवर्ड या क्रेडिट कार्ड नंबर या किसी अन्य गोपनीय जानकारी में संवेदनशील जानकारी शामिल न करें। यदि कोई ऐसी घटना है जिसकी कोई जानकारी है, तो उसे लॉग इन करने से पहले छोड़ दिया जाना चाहिए।

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

  5. उचित प्रमाणीकरण - प्रमाणीकरण वह तंत्र है जिसके द्वारा ग्राहक वेब सेवा के साथ अपनी पहचान स्थापित कर सकते हैं, जो एक निश्चित सेट का उपयोग करके उस पहचान को प्रमाणित कर सकते हैं। उपयोगकर्ता की क्रेडेंशियल्स को कभी भी स्टोर नहीं करना चाहिए, और इसलिए, यदि WS सुरक्षा का उपयोग वेब सेवा को कॉल करने के लिए किया जाता है, तो यह ध्यान दिया जाना चाहिए कि वेब सेवा को SOAP हेडर में भेजे गए क्रेडेंशियल्स को संग्रहीत नहीं करना चाहिए। इन्हें वेब सेवा द्वारा त्याग दिया जाना चाहिए।

सारांश

  • SOAP वेब सेवाओं के लिए कॉल किए जाने पर अतिरिक्त सुरक्षा प्रदान करने के लिए WS सुरक्षा नामक एक अतिरिक्त परत प्रदान करता है।
  • डब्ल्यूएस सुरक्षा को एक साधारण उपयोगकर्ता नाम या पासवर्ड के साथ बुलाया जा सकता है या प्रमाणीकरण के लिए द्विआधारी प्रमाण पत्र के साथ उपयोग किया जा सकता है
  • हमने देखा है कि .Net में हम SOAP हैडर तत्व के भाग के रूप में उपयोगकर्ता नाम और पासवर्ड को पास करने के लिए वेब सेवा को अनुकूलित कर सकते हैं।