好的,所以场景是这样的:
我有多个Web应用程序,它们使用wcf服务。现在我正在更改wcf服务以使用Sharepoint 2010 Web服务,即UserprofileService.asmx
网络应用程序 - > WCF服务 - > Sharepoint WebService
问题是如果我在wcf服务中使用以下代码,它可以与Sharepoint服务一起使用,并且当我从我的机器测试wcf服务时,我能够访问sharepoint userprofile服务中可用的方法。 / p>
C#
service.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
service.ChannelFactory.Credentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;
的Web.config
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Ntlm" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
但我无法再通过Web应用程序调用WCF服务,因为Web应用程序使用以下内容。
<security mode="Message">
<transport clientCredentialType="Windows" proxyCredentialType="None" realm="">
<extendedProtectionPolicy policyEnforcement="Never"/>
</transport>
<message clientCredentialType="Windows" negotiateServiceCredential="true" algorithmSuite="Default" establishSecurityContext="true"/>
</security>
我需要一种以这种方式配置WCF服务的方法,它仍然能够与所有现有应用程序通信,并且能够同时与Sharepoint服务进行通信。
最重要的是,我想使用运行WCF服务的服务帐户(例如:b2 \ deltaUser)来访问共享点userprofile服务中不同用户的配置文件。我需要使用假冒吗?如果是,我怎么能在这里使用它。
答案 0 :(得分:0)
解决方案很简单。创建两个单独的绑定,并做到了这一点。 :)