背景
ASP.Net MVC网站。在IIS7,Intranet上托管。数据库:SQL Server。通过NHibernate访问
在连接字符串中,访问权限设置为Integrated Security: SSPI
(DB的权限是基于Active-Directory的。)
简而言之,这是典型的双跳情况,
我需要将客户端的凭据传递给IIS,从IIS传递到SQL Server。
问题:
问题是黄色的死亡屏幕,错误:
Login failed for user 'MyDomain\UserThatRunsAppPool'.
我尝试修复问题的事情:
Provider
设置为Negotiate:Kerberos
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中)。
答案 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。