6

मैं SharePoint 2010दावों के आधार प्रमाणीकरण दोनों विंडोज और प्रपत्र आधारित प्रमाणीकरण (FBA) बाह्य प्रयोक्ताओं के लिए के साथ के लिए कॉन्फ़िगर। मुझे कस्टम डब्ल्यूसीएफ सेवा विकसित करने की भी आवश्यकता है। मुद्दा यह है कि मैं चाहता हूं कि विंडोज क्रेडेंशियल डब्लूसीएफ सेवा में पास हो जाएं; हालांकि, मुझे लगता है कि विंडोज़ क्रेडेंशियल्स सेवाओं में पारित नहीं हो रहा है। मेरी कस्टम डब्ल्यूसीएफ सेवा बेनामी प्रमाणीकरण (जिसे एफआईबी लॉगिन स्क्रीन प्रदर्शित करने के लिए आईआईएस में सक्षम होना है) का उपयोग करना प्रतीत होता है।SharePoint 2010 कस्टम WCF सेवा - विंडोज और एफ बी ए प्रमाणीकरण

उदाहरण मैंने अनुसरण करने का प्रयास किया है http://msdn.microsoft.com/en-us/library/ff521581.aspx पर पाया गया है।

डब्ल्यूसीएफ सेवा _vti_bin (ISAPI फ़ोल्डर) पर तैनात हो जाती है।

यहाँ .svc फ़ाइल

<%@ ServiceHost Language="C#" Debug="true" 
Service="MyCompany.CustomerPortal.SharePoint.UI.ISAPI.MyCompany.Services.LibraryManagers.LibraryUploader, $SharePoint.Project.AssemblyFullName$" 
Factory="Microsoft.SharePoint.Client.Services.MultipleBaseAddressBasicHttpBindingServiceHostFactory, Microsoft.SharePoint.Client.ServerRuntime, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" 
CodeBehind="LibraryUploader.svc.cs" %> 

यहाँ के लिए कोड है (WPF .svc फ़ाइल

[ServiceContract] 
public interface ILibraryUploader 
{ 
    [OperationContract] 
    string SiteName(); } 

[BasicHttpBindingServiceMetadataExchangeEndpoint] 
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] 
public class LibraryUploader : ILibraryUploader 
{ 
    //just try to return site title right now… 
    public string SiteName() 
    { 
     WindowsIdentity identity = ServiceSecurityContext.Current.WindowsIdentity; 

     ClaimsIdentity claimsIdentity = new ClaimsIdentity(identity); 

     return SPContext.Current.Web.Title; 
    } 
    } 

WCF परीक्षण ग्राहक मैं बस इसे बाहर का परीक्षण करने के लिए कोड के पीछे है ऐप) डब्ल्यूसीएफ सेवा को कॉल करने के लिए निम्नलिखित कोड का उपयोग करता है ...

private void Button1Click(object sender, RoutedEventArgs e) 
    { 
     BasicHttpBinding binding = new BasicHttpBinding(); 
     binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly; 
     binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm; 

     EndpointAddress endpoint = 
      new EndpointAddress(
       "http://dev.portal.data-image.local/_vti_bin/MyCompany.Services/LibraryManagers/LibraryUploader.svc"); 

     LibraryUploaderClient libraryUploader = new LibraryUploaderClient(binding, endpoint); 
     libraryUploader.ClientCredentials.Windows.AllowedImpersonationLevel = 
      System.Security.Principal.TokenImpersonationLevel.Impersonation; 

     MessageBox.Show(libraryUploader.SiteName()); 
    } 

मैं आईआईएस सेकुर के साथ कुछ हद तक अनुभवहीन हूं दावों की बात आती है और विंडोज और एफबीए दोनों का उपयोग करने की कोशिश करते समय यह सेटिंग्स/कॉन्फ़िगरेशन। जब सुरक्षा के लिए डब्ल्यूसीएफ कॉन्फ़िगरेशन की बात आती है तो मैं भी अनुभवहीन हूं। मैं आमतौर पर आंतरिक बिज़ ऐप्स विकसित करता हूं और विजुअल स्टूडियो को यह तय करने देता हूं कि सुरक्षा का क्या उपयोग करना है क्योंकि सुरक्षा शायद ही कभी चिंता का विषय है।

उत्तर

0

मुझे लगता है कि मैंने जवाब निकाला है। कुंजी एक web.config फ़ाइल बनाने और .svc फ़ाइल के समान फ़ोल्डर में तैनात करने के लिए है। Web.config फ़ाइल को BasicHttp बाइंडिंग "के बजाय" wsHttp बाइंडिंग "का उपयोग करने के लिए बाध्यकारी निर्दिष्ट करने की आवश्यकता है। मैंने एसएससीसी घोषणा में फैक्टरी विशेषता को भी हटा दिया और कक्षा में BasicHttpBindingServiceMetadataExchangeEndpoint विशेषता भी हटा दी।

+5

क्या आप अपनी पूरी वेब.कॉन्फिग फ़ाइल को समाधान के रूप में पोस्ट कर सकते हैं? मैं डब्ल्यूसीएफ और 2010 के दावों के प्रमाणीकरण के साथ एक समान मुद्दे में भाग रहा हूं। –

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

  • कोई संबंधित समस्या नहीं^_^