我们有一个系统,他们的客户需要集成 Windows 身份验证。这是一个 ASP.NET 3.5 应用程序,连接到 Sql Server 2005。Web 服务器是 Server 2003 R2 SP2。数据库服务器是 Server 2003 SP2(不是 R2)。
在数据库服务器中,我运行了以下脚本
exec sp_grantlogin 'myDomain\myUserGroup'
USE myDbName
exec sp_grantdbaccess 'myDomain\myUserGroup'
我现在在 Windows 用户组“myDomain\myUserGroup”中有 3 个用户。所有三个用户的帐户都被标记为受信任的委派。AD 中的 Web 服务器帐户被标记为受信任以进行委派。
Web 应用程序被标记为使用 Windows 身份验证(所有其他身份验证均已关闭)。web.config 有以下几行:
<authentication mode="Windows" ></authentication>
<identity impersonate="true" />
<authorization>
<deny users="?"/>
</authorization>
然而,当我尝试使用用户组中的用户连接到 Web 应用程序时,出现错误:
System.Data.SqlClient.SqlException:
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
我的连接字符串是从这样构造的 Sql ConnectionStringBuilder 构建的:
ConnectionStringBuilder.DataSource = "MYDBSERVER"
ConnectionStringBuilder.InitialCatalog = "MYDBCATALOG"
ConnectionStringBuilder.IntegratedSecurity = True
如果我在 web.config <identity /
> 行上对允许的帐户之一进行硬编码,则它可以工作。但是,如果我取消硬编码帐户并尝试从客户端机器传递身份。我得到了错误。
所以似乎我没有为多跳集成登录场景正确配置一些东西,但我不知道是什么。
提前致谢!