双击与ASP.Net网站和NHibernate

时间:2012-06-24 09:41:01

标签: sql-server authentication iis-7 kerberos

背景

ASP.Net MVC网站。在IIS7,Intranet上托管。

数据库:SQL Server。通过NHibernate访问 在连接字符串中,访问权限设置为Integrated Security: SSPI (DB的权限是基于Active-Directory的。)

简而言之,这是典型的双跳情况,
我需要将客户端的凭据传递给IIS,从IIS传递到SQL Server。

问题:

问题是黄色的死亡屏幕,错误:
Login failed for user 'MyDomain\UserThatRunsAppPool'.

我尝试修复问题的事情:

  • 配置身份验证以仅启用 Windows身份验证
    ASP.NET模拟
  • 将Windows身份验证Provider设置为Negotiate:Kerberos
    (禁用内核模式身份验证后)
  • 确保UserThatRunsAppPool的委托设置为:
    Active Directory中的“Trust the user for delegation to any service (Kerberos only)
  • Application_BeginRequest()转移NHibernate SessionFactory创建 到Session_Start()

我尝试修复问题的成功程度如何:

完全没有。


修改
我还尝试将IIS服务器的委派设置为“Trust the user for delegation to any service (Kerberos only)”(在Active Directory中)。

1 个答案:

答案 0 :(得分:3)

In short, this is a typical double-hop situation,
where I need to pass client's credentials to IIS, and from IIS to SQL Server.

你遇到了“委托”问题。如果要保持理智,请更改连接字符串以使用SQL用户名+密码而不是SSPI。

如果您觉得两周的调试失败并与您的域管理员争吵,请阅读Fun with the Kerberos Delegation Web Site