3

拜托,有人可以提供一种简单直接的方法来启用 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'. 

表示双跳失败。进一步的事实是,在 db 服务器上的应用程序日志中有大量来自“MSSQL”的条目说同样的事情。

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

总而言之,我有

  • kerberos 域,
  • db 和 web 服务器都受信任的委派
  • 受信任委托的用户
  • AD 组中的用户
  • AD 组作为 sql 中的登录名(和 db 中的用户)
  • IIS 关闭匿名、集成打开、基本和摘要关闭
  • 启用集成的 IE

4

3 回答 3

7

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

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

一旦你弄清楚出了什么问题,修复起来就会容易得多。

于 2009-08-06T05:35:27.630 回答
5

答案最终在于 SPN。

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

HTTP/server 
HTTP/server.ourdomain.com

我还需要添加一个额外的:

HTTP/test.ourcompany.com

哎呀,真是一场战斗!至少结束了!:)
感谢您的帮助!

于 2009-08-06T21:19:55.977 回答
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 />");
}
于 2009-08-05T23:26:22.237 回答