繁体   English   中英

ASP.NET 4.0和SQL2008R2中的Kerberos双跃点

[英]Kerberos double-hop in ASP.NET 4.0 & SQL2008R2

我有一个ASP.NET 4.0应用程序,我需要将身份验证转发到数据库。 出于此请求帮助的目的,我们调用Web服务器“app1”和数据库服务器“sql1”。

SQL2008R2数据库服务作为自定义域帐户“SqlServer”下的命名实例“SQL2008R2”运行。 该服务器正在运行Windows Server 2008 R2 Enterprise Edition。 我为此创建了一个SPN ...

setspn -a MSSQLSvc/sql1.mydomain.local:SQL2008R2 SqlServer

ASP.NET应用程序在集成管道模式下使用自定义域帐户“WebApplicationUser”在应用程序池下运行。 它目前在运行Windows 7 Enterprise的笔记本电脑上运行,但最终将托管在Windows Server 2008 R2标准版上。 我为应用程序创建了2个SPN(在我目前运行的Windows 7机器上)...

setspn -a http/app1 WebApplicationUser
setspn -a http/app1.mydomain.local WebApplicationUser

在Active Directory用户和计算机中,我选择了“WebApplicationUser”帐户,并且已使用任何协议启用约束委派为“MSSQLSvc / sql1.mydomain.local:SQL2008R2”(我还尝试过仅使用Kerbero)。

应用程序在IIS 7.5中设置,并且身份验证设置为禁用Anonymouse,Basic,Digest和Forms,同时启用“ASP.NET模拟”和“Windows”。 Windows身份验证已关闭“扩展保护”并启用“内核模式身份验证”。 提供者按顺序是“协商”和“NTLM”。

ASP.NET应用程序使用EF,连接字符串配置为使用集成安全性...

<connectionStrings>
    <add name="MyContext"
             connectionString="metadata=res://*/Data.MyModel.csdl|res://*/Data.MyModel.ssdl|res://*/Data.MyModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=sql1.mydomain.local\sql2008r2;Initial Catalog=MyDatabase;Persist Security Info=false;Integrated Security=True;MultipleActiveResultSets=True&quot;"
             providerName="System.Data.EntityClient" />
</connectionStrings>

我的web配置同时指定了Windows身份验证和模拟,因为我使用了异步页面,我还启用了inpersonation策略流程...

<runtime>
    <alwaysFlowImpersonationPolicy enabled="true" />
</runtime>

<system.web>
    <authentication mode="Windows" />
    <identity impersonate="true" />
</system.web>

如果我在本地登录(在“web1”上)并浏览到应用程序(使用IE),这一切都有效 - 但这不涉及我试图解决的双跳。

如果我登录到另一台计算机,然后使用IE浏览到该应用程序,或者我使用FireFox从本地计算机浏览,这不起作用 - 请注意:FireFox会提示我输入登录详细信息。 与数据库的连接失败,“用户登录失败'NT AUTHORITY \\ ANONYMOUS LOGON'”

与许多文章(这里可能是问题的一部分)不同,我没有使用任何自定义代码来模仿用户。 据我所知,模拟将通过上面的web.config设置全面应用于应用程序。 我所做的就是打开连接,然后在完成连接后再次关闭它。

我显然错过了一步(或两步),但看了我能找到的所有文档(并且已经有很多),我仍然无法找到那一步。 我找到的99%的文档实际上与IIS6和Windows 2003有关,但原则应该保持不变。

有没有人成功使这样的配置在Windows 7和/或Windows Server 2008上运行?

为SQL Server配置SPN时,我们发现需要包含SQL Server侦听的PORT(1433)。

您应该下载并使用Brian Booth的DelegConfig v2工具来帮助您设置正确的配置设置。 http://blogs.iis.net/brian-murphy-booth/archive/2009/04/22/delegconfig-v2-beta.aspx

在整个过程中,它基本上都会牵着你的手。 我们发现这个工具非常宝贵。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM