我们有一个系统,他们的客户希望集成Windows身份验证。 这是一个连接到Sql Server 2005的ASP.NET 3.5应用程序。 Web服务器是Server 2003 R2 SP2。 数据库服务器是Server 2003 SP2(不是R2)。ASP.NET> SqlServer;信任和委托
在DB服务器,我跑了下面的脚本
exec sp_grantlogin 'myDomain\myUserGroup'
USE myDbName
exec sp_grantdbaccess 'myDomain\myUserGroup'
我有3个用户的Windows用户组 'myDomain的\ myUserGroup' 在现在。所有三个用户的帐户都被标记为可信委派。 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 /
>行它的工作。但是,如果我脱掉硬编码账户并尝试从客户机传递身份。我收到错误。
因此,似乎我没有为多跳集成登录场景配置正确的东西,但我无法弄清楚什么。
在此先感谢!
那么,虽然我们可以控制客户端站点上的专用Web /数据库服务器,但我无法控制他们的域名,所以我们选择使用基本身份验证。而不是试图处理可能需要在其领域中对AD进行更改的政治问题。 切换到基本身份验证。正如你所说,登录流程非常完美,现在我们正在运行。 谢谢! – eidylon 2009-07-14 15:36:07