SSPI安全性无法从应用程序服务器连接到远程数据库服务器。
我正在尝试编辑Dynamics CRM中嵌入的aspx页面中的web.config。上一个web.config连接字符串如下所示:
<add name="conn" connectionString="Server=10.138.50.133;MultipleActiveResultSets=True;Database=dbserverip;User Id=domainCRMADMINUAT;Password=p@ssword" providerName="System.Data.SqlClient" />
出于安全考虑,现在我需要将集成安全性更改为SSPI。
<add name="conn" connectionString="Data Source=SGARCRMDBUAT;Initial Catalog=DB_MSCRM;Integrated Security=SSPI" providerName="System.Data.SqlClient" />
然而,它总是无法连接到数据库服务器,并向我抛出以下错误:
[SqlException: Login failed for user 'NT AUTHORITYANONYMOUS LOGON'.]
以下是我已经采取但仍然不起作用的步骤:
将CRM应用程序池标识从本地系统更改为在应用程序和数据库服务器上都具有管理权限的系统管理员用户。
将
<identity impersonate="true"/>
添加到web.config 中禁用站点的
Anonymous Authentication
。启用ASP.NET Impersonatation
更改综合安全=真正的
AD 中没有特殊的委派配置
我意识到该网站在服务器localhost中正常工作,只有当我试图从与服务器位于同一LAN网络中的PC访问时才会显示匿名错误。
又发生了一件怪事当我在数据库中创建一个新的登录用户"NT AUTHORITY\ANOYMOUS LOGON"时,错误消失了,页面运行正常似乎"NT AUTHORITY\ANOYMOUS LOGON"是硬编码的用户或配置??但我已经检查了我的代码,在我的代码中不存在这样的东西。
真的希望有人能帮我谢谢。
这似乎是"双跳问题"。当客户端、web服务器和SQL服务器都在不同的计算机上时,必须在此web服务器和SQL服务器之间启用委派。这是在AD用户和计算机工具中通过计算机属性的"委派"选项卡设置的。
关于什么是"双跳问题"以及如何解决它的更多细节,您可以参考以下文章:https://blogs.msdn.microsoft.com/crm/2012/09/19/enabling-kerberos-for-microsoft-dynamics-crm-2011/
https://blogs.technet.microsoft.com/taraj/2009/01/29/checklist-for-double-hop-issues-iis-and-sql-server/
如何在本地用户名下的远程机器上运行R脚本(使用集成的windows身份验证进行数据库连接)?