2010-04-10 21 views
17

वहाँ एक WCF सेवा प्रमाणीकरण के लिए सदस्यता प्रदाता से एक ही उपयोगकर्ता नाम और पासवर्ड का उपयोग करने का कोई तरीका है में ASP.NET सदस्यता प्रदाता authentincation ले रहे हैं? यदि हां, तो कौन सा बाध्यकारी इसका समर्थन करता है? मुझे वर्तमान में सेवा कॉल करने वाले उपयोगकर्ता से प्रोफ़ाइल चर निकालने की आवश्यकता है। किसी भी मदद के लिए धन्यवाद।एक WCF सेवा

उत्तर

21

मूल रूप से किसी भी बाध्यकारी है कि ASP.NET सदस्यता प्रदाता का उपयोग करने के लिए विन्यस्त किया जा सकता संदेश सुरक्षा के लिए ग्राहक प्रमाणिकता के रूप में नाम/पासवर्ड स्वीकार करता है।

<serviceBehaviors> 
    <behavior name="AspNetMembership"> 
    <serviceCredentials> 
     <userNameAuthentication 
      userNamePasswordValidationMode ="MembershipProvider" 
      membershipProviderName ="SqlMembershipProvider"/> 
    </serviceCredentials> 
    </behavior> 
</serviceBehaviors> 
: -

बाहर चेक how to use the ASP.NET Membership provider in WCF पर इस MSDN डॉक्स आप प्रकार के ग्राहक क्रेडेंशियल के लिए अपने बाध्यकारी "उपयोगकर्ता नाम"

<bindings> 
    <wsHttpBinding> 
    <!-- Set up a binding that uses UserName as the client credential type --> 
    <binding name="MembershipBinding"> 
     <security mode ="Message"> 
     <message clientCredentialType ="UserName"/> 
     </security> 
    </binding> 
    </wsHttpBinding> 
</bindings> 

और सेवा उपयोगकर्ता प्रमाणीकरण के लिए ASP.NET सदस्यता उपयोग करने के लिए विन्यस्त करने की जरूरत

और निश्चित रूप से, आपको इन सेवाओं को कॉन्फ़िगर करते समय अपनी सेवाओं पर लागू करना होगा!

<services> 
    <service name="YourService" behaviorConfiguration="AspNetMembership"> 
    .... 
    </service> 
</services> 

उपयोगकर्ता नाम ग्राहक क्रेडेंशियल प्रकार basicHttpBinding, wsHttpBinding, netTcpBinding द्वारा समर्थित है - तो काफी सभी सामान्य संदिग्धों।

+0

क्या https का उपयोग किए बिना basicHttp बाइंडिंग के साथ उपयोगकर्ता नाम का उपयोग करना संभव है? इसके अलावा, अगर मैं wsHttp बाइंडिंग का उपयोग करता हूं, तो क्या https अनिवार्य है? –

+2

यदि आप उपयोगकर्ता नाम/पीडब्ल्यूडी का उपयोग कर रहे हैं, तो डब्ल्यूसीएफ एक सुरक्षित लिंक चाहता है - इसलिए आपको https का उपयोग करना होगा (क्योंकि आप संदेश-आधारित एन्क्रिप्शन का उपयोग नहीं कर सकते हैं)। और नहीं: आप पूरी तरह से https के बिना wsHttp बाइंडिंग का उपयोग कर सकते हैं - जब तक आप संदेशों को एन्क्रिप्ट कर सकते हैं, उदा। होने के लिए आपकी मदद @marc_s के लिए एक प्रमाण पत्र उपलब्ध –

+0

धन्यवाद द्वारा –

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