好的,所以场景是这样的:
我有多个使用 wcf 服务的 Web 应用程序。现在我正在更改 wcf 服务以使用 Sharepoint 2010 Web 服务,即 UserprofileService.asmx
Web 应用程序 -> WCF 服务 -> Sharepoint WebService
问题是,如果我在 wcf 服务中使用以下代码,它可以与 Sharepoint 服务一起正常工作,并且当我从我的机器测试 wcf 服务时,我能够访问 sharepoint userprofile 服务中可用的方法。
C#
service.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
service.ChannelFactory.Credentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;
网页配置
<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 服务中不同用户的配置文件。我需要使用模拟吗?如果是,我该如何在这里使用它。