【发布时间】:2014-01-16 20:00:05
【问题描述】:
我有一个 Web 部件,我试图以当前登录用户的身份调用 WCF 服务。在 Visual Studio 2013 中调试时,Web 部件在本地工作 - 调用外部 WCF 服务。我已经为 WCF 服务和 SharePoint 网站配置了 Kerberos,这样的费用都是正确的。我可以从另一个启用 Kerberos 的 Web 应用程序以及控制台应用程序正确调用 WCF 服务。
现在我想将此应用到 SharePoint 场。但是,在我将解决方案添加到场并激活共享点站点上的功能之后...当我尝试将 Web 部件添加到页面时出现错误。错误出现在一个显示“调用者未经服务验证”的框中。错误来自实际的方法调用。
我的 web 部件代码是这样的:
WorksiteService.iWorksiteServiceClient wss = new WorksiteService.iWorksiteServiceClient("WSHttpBinding_iWorksiteService");
wss.ClientCredentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;
wss.ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation;
WorkSiteDocument[] wd = wss.GetDocumentsByAlias2("test");
sharepoint 站点的 web.config 中有这个端点:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_iWorksiteService" />
</wsHttpBinding>
</bindings>
<client>
<endpoint address="http://myservicerd.xyz.com/WorkSiteService.svc" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_iWorksiteService" contract="WorksiteService.iWorksiteService" name="WSHttpBinding_iWorksiteService">
<identity>
<servicePrincipalName value="myservicerd.xyz.com" />
</identity>
</endpoint>
</client>
</system.serviceModel>
关于我为什么会收到该错误的任何想法?我假设由于某种原因我没有获得当前用户的凭据。sharepoint 服务器或 wcf 服务器的事件或 sharepoint 日志中没有任何内容。有关如何解决此问题的任何想法?感谢您提供的任何帮助。
【问题讨论】:
-
是否为 sharepoint apppool 帐户正确配置了委派?
-
另外,也许这篇博文会对您有所帮助(尽管它在大多数情况下适用于 sp2013)。 moonistahir.wordpress.com/2014/01/13/…
标签: c# wcf sharepoint-2010 single-sign-on kerberos