我们有一个SharePoint应用程序需要从WCF服务检索外部数据,而WCF服务又从SQL服务器获取数据(2005) . SharePoint通过NTLM进行身份验证,并且凭据可以转换为SharePoint服务器上的声明 .
WCF服务连接到先前由Web应用程序访问的数据库(Web应用程序正在迁移到SP WCF) . 该数据库是经过许可的,因此必须使用最终用户的身份进行访问,这在客户端 - > Web应用程序 - > SQL Server时很好,但在客户端 - > SharePoint-> WCF服务 - > SQL Server时失败 .
我已经阅读了一些关于模仿和c2wts的内容,我认为这适用于这种情况,但我不确定它是如何适应的 . 它应该是在SharePoint服务器还是服务服务器等......?
如何通过SharePoint和WCF服务保持最终用户的身份以便能够访问SQL Server?
2 回答
您需要配置Kerberos身份验证 . 并且预先告诉你,这是一个PITA .
以下是一些可以帮助您入门的链接(我已经在SP2007上关注了它们,但是如果您使用SP2010则不应该有太多区别):
http://blogs.objectsharp.com/cs/blogs/max/archive/2008/08/01/implementing-kerberos-in-sharepoint-running-on-windows-server-2008.aspx
http://blogs.msdn.com/b/martinkearn/archive/2007/04/23/configuring-kerberos-for-sharepoint-2007-part-1-base-configuration-for-sharepoint.aspx
此问题的另一个解决方案是使用Secure Store . 这样,您就可以将单个用户映射到bdc模型的单独存储凭据或映射到单个凭据的用户组 .