这是我的情况。

我在一台服务器上运行了SharePoint 2010,而SQL Server在另一台服务器上运行。这两台机器都在同一域上,但所涉及的登录是每台机器本地的。 SharePoint作为NT Authority Network Service运行,如果有任何区别。

我创建了一个BCS,可以从remove SQL Server中提取数据。连接字符串显示如下: Data Source={0}; Initial Catalog={1};User Id={2}; Password={3}; Integrated Security=SSPI. 。我已经确认连接字符串已经很好地形成,一旦更换了所有{x}。

这可以正常工作,前提是您可以从同一台计算机上运行的浏览器访问SharePoint站点(即托管SharePoint的计算机,也就是说)。一旦您从其他机器上的浏览器连接到它就会失败。

在SQL Server上拍摄profiler,发现当“本地”访问SharePoint时,进行查询的用户是登录帐户。当它远程运行时,用户是“匿名”。由于帐户许可,前者成功了,而后者失败了。在任何情况下,用户实际上是连接字符串中提供的用户。

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

因此,简而言之,我该如何获得这个BCS来真正尊重连接字符串用户名/密码对?或者,如果不这样做,我该如何达到同等的目的?服务器设置(一个在一个,另一个SQL Server上的SharePoint)不可协商;很遗憾。

有帮助吗?

解决方案

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

与任何集成的身份验证连接一样,远程服务器属于受约束的委托限制,它们作为匿名验证。为了使NT冒充的凭据流到下一个HOP(SQL Server),必须启用受约束的委托,请参见:

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top