यह पूरी तरह से बाध्यकारी पर निर्भर है जिसका आप उपयोग कर रहे हैं, और कोई सामान्य उत्तर नहीं है।
उदाहरण के लिए
, यदि आप NetNamedPipeBinding का उपयोग करें और कर
myChannelFactory.Credentials.UserName.UserName = "username";
myChannelFactory.Credentials.UserName.Password = "password";
आप अपना समय बर्बाद कर रहे हैं: ग्राहक के पक्ष बाध्यकारी इस डेटा के साथ कुछ भी नहीं है, यह संदेश में नहीं होगा, और यह जीत हासिल की सेवा पक्ष पर बिल्कुल भी उपलब्ध नहीं है।
बाइंडिंग केवल इस डेटा का उपभोग करेगी यदि यह सुरक्षा विकल्पों के साथ कॉन्फ़िगर किया गया है जो उपयोगकर्ता नाम/पासवर्ड प्रमाण-पत्रों का उपयोग निर्दिष्ट करते हैं। ऐसा करने वाले सभी मानक बाइंडिंग प्रमाणीकरण के लिए प्रमाण-पत्रों का उपयोग करेंगे, जिसके परिणाम ServiceSecurityContext
के माध्यम से सेवा में सतह पर सतह के रूप में दिखाई देंगे, जैसा कि संकेत दिया गया है, और पासवर्ड डेटा शामिल नहीं होगा।
प्रमाणीकरण का समर्थन करने के लिए, डेटा को संदेश शीर्षकों में कहीं भी ले जाना चाहिए। वास्तव में कहां और किस रूप में बाध्यकारी-निर्भर होगा। यह न मानें कि आप उन्हें हमेशा operationContext.IncomingMessageHeaders[1]
में पाएंगे।
संपादित करें: आप कस्टम बाइंडिंग बनाने में सक्षम हो सकते हैं जो आपको वह चीज़ देता है जो आप ढूंढ रहे हैं।
CustomBinding binding = new CustomBinding(...);
binding.Elements.Insert(1,
SecurityBindingElement.CreateUserNameOverTransportBindingElement());
सेवा तरफ, एक UserNamePasswordValidator
प्रदान करते हैं और इस तरह साख कॉन्फ़िगर करें:
serviceHost.Credentials.UserNameAuthentication.UserNamePasswordValidationMode =
System.ServiceModel.Security.UserNamePasswordValidationMode.Custom;
servicehost.Credentials.UserNameAuthentication.CustomUserNamePasswordValidator =
new MyUserNamePasswordValidator();
उपयोगकर्ता नाम और पासवर्ड तो MyUserNamePasswordValidator
की Validate
विधि करने के लिए वितरित किया जाएगा।
चेतावनी: यह एक सुरक्षित प्रमाणीकरण तंत्र नहीं है जब तक कि आप एक सुरक्षित परिवहन का उपयोग नहीं कर रहे हैं, क्योंकि संदेश शीर्षलेख में प्रमाण पत्र स्पष्ट रूप से भेजे जाते हैं।
आपको यह क्यों चाहिए? क्या आप अतिरिक्त प्रमाणीकरण करने की कोशिश कर रहे हैं? – McKay