나는 셰어가 2010 외부 사용자 모두 윈도우 및 폼 기반 인증 (FBA)와 클레임 기반 인증에 대해 구성. 또한 사용자 지정 WCF 서비스을 개발해야합니다. 문제는 Windows 자격 증명을 WCF 서비스에 전달하려고합니다. 그러나 Windows 자격 증명을 서비스에 전달할 수없는 것 같습니다. 내 사용자 지정 WCF 서비스가 익명 인증을 사용하고있는 것 같습니다 (FBA 로그인 화면을 표시하려면 IIS에서 활성화해야 함).SharePoint 2010의 사용자 지정 WCF 서비스 - Windows 및 FBA 인증
내가 시도한 예는 http://msdn.microsoft.com/en-us/library/ff521581.aspx입니다.
WCF 서비스는 _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" %>
코드입니다합니다 (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 테스트 클라이언트의 코드 뒤에 WPF입니다 app)는 다음 코드를 사용하여 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());
}
IIS 보안에 다소 익숙합니다. 클레임 및 Windows와 FBA를 모두 사용하려고 할 때 설정/구성. 보안을 위해 WCF 구성에 관해서도 나는 경험이 없습니다. 필자는 보통 내부 비즈 애플 리케이션을 개발하고 보안이 거의 문제가되지 않기 때문에 Visual Studio에서 사용할 항목을 결정하도록합니다.
전체 web.config 파일을 솔루션으로 게시 할 수 있습니까? 나는 WCF와 2010 년 클레임 기반 인증과 비슷한 문제를 겪고있다. –