2

背景:

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 身份验证设置ProviderNegotiate:Kerberos
    (禁用内核模式身份验证后)
  • 确保在 Active Directory中将 UserThatRunsAppPool 的委托设置为:
    “ ”Trust the user for delegation to any service (Kerberos only)
  • 将 NHibernate SessionFactory 创建从移动Application_BeginRequest()
    Session_Start()

我在尝试解决问题方面取得了多大的成功:

一点也不。


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

4

1 回答 1

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。

如果您觉得两周的调试和与域管理员的争吵感到沮丧,请阅读Kerberos 委派网站的乐趣

于 2012-06-24T09:51:56.760 回答