请有人可以提供一种简单,直接的方式来启用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都是微软,他们不能说得更好吗???
总而言之,我有
答案 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 />");
}