0

这是我的场景。

我在一台服务器上运行 SharePoint 2010,在另一台服务器上运行 SQL Server。两台机器都在同一个域上,但所涉及的登录名对每台机器都是本地的。SharePoint 作为 NT Authority\Network Service 运行,如果这有什么不同的话。

我创建了一个从删除 SQL Server 中提取数据的 BCS。连接字符串如下所示:Data Source={0}; Initial Catalog={1};User Id={2}; Password={3}; Integrated Security=SSPI。一旦所有 {x} 都被替换,我已经确认连接字符串格式正确。

如果您从运行在同一台机器(也就是说,托管 SharePoint 的机器)上的浏览器访问 SharePoint 站点,这很好用。一旦您从另一台机器上的浏览器连接到它,它就会失败。

在 SQL Server 上使用分析器显示,当“本地”访问 SharePoint 时,进行查询的用户是登录帐户。当它远程运行时,用户是“匿名的”。由于账户权限,前者成功,后者失败。在任何情况下,用户实际上都不是连接字符串中提供的那个。

这个答案表明问题可能与连接池有关,但并没有帮助我解决问题。

那么,简而言之,我怎样才能让这个 BCS 真正尊重连接字符串用户名/密码对?或者,如果做不到这一点,我怎样才能达到同等的目的?服务器设置(一个是 SharePoint,另一个是 SQL Server)是不可协商的;很遗憾。

4

1 回答 1

1

您可以拥有集成安全XOR,您可以拥有 SQL 身份验证。但是你不能混合它们。一旦您指定Integrated Security=SSPI,您的用户名和密码将被忽略,因为将使用集成安全性。如果要指定 SQL 身份验证用户和密码,请删除“集成安全性”部分。

与任何集成身份验证连接一样,远程服务器属于受约束委派限制,并且它们以匿名身份进行身份验证。要使 NT 模拟凭据流向下一跃点(SQL Server),必须启用约束委派,请参阅:

于 2010-04-19T21:15:28.400 回答