繁体   English   中英

在SharePoint 2010 Web部件中模拟用户以调用WCF服务

[英]Impersonate User in SharePoint 2010 web part to call WCF service

我有一个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");

共享点站点中的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>

关于我为什么收到该错误的任何想法? 我假设由于某种原因我没有获得当前用户的凭据。共享点服务器或wcf服务器的事件或共享点日志中没有任何内容。 关于如何解决此问题的任何想法?感谢您提供的任何帮助。

我不是Sharepoint专家,但从Kerberos的角度来看,我建议按照Marek的建议检查Active Directory中的委托设置。

在像这样的双跳场景中,必须允许中间的“人”扮演客户的身份。

问题仍然是中间的“人”是谁,这取决于IIS配置。 如果将IIS配置为用于内核模式身份验证,则在安装服务器IIS的情况下,中间身份可能是计算机帐户。

否则,我将假定需要委派权限的身份应该是Web部件在其中运行的应用程序池的身份。

如果确定了身份,请转到相应的Active Directory帐户(“代理”选项卡),然后选择“信任帐户可进行委派”。

也许这篇博客文章可以对此有所启发http : //tekaris.com/blog/2013/04/05/http-400-bad-request-kerberos-authentication-with-iis-2/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM