sql-server - 使用 ASP.Net 网站和 NHibernate 进行双跳

标签 sql-server authentication iis-7 kerberos

背景:

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

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

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

问题:

问题是蓝屏死机,并出现错误:
用户“MyDomain\UserThatRunsAppPool”登录失败。

我尝试做的事情来解决问题:

  • 配置身份验证以仅启用 Windows 身份验证
    ASP.NET 模拟
  • 将 Windows 身份验证 Provider 设置为 Negotiate:Kerberos
    (禁用内核模式身份验证后)
  • 确保 UserThatRunsAppPool 的委托(delegate)设置为:
    '信任用户对 Active Directory 中任何服务的委派(仅限 Kerberos)'
  • Application_BeginRequest() 移动 NHibernate SessionFactory 创建
    Session_Start()

我尝试解决问题的成功程度:

完全没有。


编辑:
我还尝试将 IIS 服务器的委派设置为“信任用户对任何服务的委派(仅限 Kerberos)”(在 Active Directory 中)。

最佳答案

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.

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

如果您感觉两周的调试令人沮丧并与域管理员争吵,请阅读 Fun with the Kerberos Delegation Web Site .

关于sql-server - 使用 ASP.Net 网站和 NHibernate 进行双跳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11176400/

相关文章:

sql-server - 如何按有拼写错误的列进行分组

mysql - 匹配日期的最后一个实例的 SQL 查询

php - 使用 Delphi 2010 和 php4Delphi 编写 PHP 扩展

python - Ident 连接通过 psycopg2 失败,但通过命令行工作

php - 如何在没有 SSL 的情况下保护身份验证 cookie

asp.net - IIS 7.0 无法正确处理静态文件

visual-studio-2010 - 使用 WebRole 在 Blob 存储 VHD 上创建虚拟目录

sql-server - 在不知道整个值列表的情况下对列进行旋转

mysql - 将表连接到依赖于表的 View 时,这是 Oracle 中的错误吗

c# - 使用 .Net Standard 2.0 库中的 x509 证书使用 WCF Web 服务?