asp.net通过kerberos集成windows身份验证到sql server

时间:2009-08-05 21:22:40

标签: asp.net sql-server windows-authentication kerberos integrated-security

请有人可以提供一种简单,直接的方式来启用ASP.NET> Kerberos> Sql Server?

我们有clientMachine> webServer> DATABASESERVER。客户端坚持认为该站点必须提取Windows登录而不提示,因此需要Kerberos和集成身份验证。它还必须模拟用户进入数据库服务器,从而产生双跳。

我们的域名是Windows 2003域名,据我所知,这意味着Kerberos已启用。在加入域的计算机上,当登录时,kerbtray告诉我我有一大堆门票,所以它显然正在工作。

AD中的Web和数据库服务器计算机帐户都“被委托信任” 必须访问系统的AD用户帐户都“被委托信任” 当它全部工作时,我会添加更多用户,现在两个就是它。

Sql Server实例在数据库服务器上的LocalSystem下运行,尽管我可以在网上告知,但这意味着它根本不需要搞乱那些SPN的东西。

然而,当我尝试使用任一用户登录时,我得到了

Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. 

表示双跳失败。在数据库服务器上的应用程序日志中,有一些来自“MSSQL”的条目说同样的事情,这进一步推动了这一点。

我真的不敢相信这有多难......我的意思是,IIS,SQL和Windows都是微软,他们不能说得更好吗???

总而言之,我有

  • kerberos域名,
  • 数据库和Web服务器都受信任授权
  • 受信任的用户授权
  • AD组中的用户
  • AD组作为sql登录(和db中的用户)
  • IIS与匿名关闭,集成打开,基本和摘要关闭
  • 启用了集成的IE

3 个答案:

答案 0 :(得分:7)

下载Troubleshooting Kerberos Delegation。它是一个救生员 在第17页,您将找到 Active Directory核对表。逐步按照清单进行操作 在第30页,您将找到客户端应用程序核对表。逐步验证清单 第35页是中间层核对表。逐步验证。
第48页是后端核对清单。逐步验证它。

如果仍有问题,该文档包含故障排除工具的详细列表(kerbtray,klist,ldifde等),详细说明如何在系统事件日志中启用日志记录和审核验证错误,详细解释所有错误来自身份验证审核的事件日志条目中的代码,依此类推。

一旦你弄明白错误,就会更容易修复。

答案 1 :(得分:5)

答案最终DID在于SPN。

此系统是在我们的测试网站上设置的,即test.ourcompany.com,因此我需要为该参考添加新的SPN。所以除了以下内容:

HTTP/server 
HTTP/server.ourdomain.com

我还需要为:

添加一个
HTTP/test.ourcompany.com
Geez,真是一场战斗!至少它结束了! :)
谢谢你的帮助!

答案 2 :(得分:0)

你所描述的内容应该没有问题。

您的连接字符串应如下所示:

<add name="IntegratedAuthConnectionString" connectionString=
 "Data Source=DATABASEINSTANCE;Integrated Security=True"
 providerName="System.Data.SqlClient"/>

您的web.config还应指定Windows身份验证

<authentication mode="Windows"/>

创建一个测试页面,该页面从Request.ServerVariables集合中转储所有内容,并确保您看到经过身份验证的用户名和域。下面代码中的一些内容

foreach (string s in Request.ServerVariables)
{
    Response.Write(s + ": " + Request.ServerVariables[s] + "<br />");
}