Sql server ASP.NET模拟场景。IIS 8.5到SQL 2012,需要设置什么SPN?
我读过许多博客,以及许多关于如何让我的IIS服务器将经过身份验证的用户传递给SQL的文章。然而,我被困在我需要设置SPN的确切位置上。这是我的设置 IIS:Sql server ASP.NET模拟场景。IIS 8.5到SQL 2012,需要设置什么SPN?,sql-server,impersonation,iis-8.5,spn,Sql Server,Impersonation,Iis 8.5,Spn,我读过许多博客,以及许多关于如何让我的IIS服务器将经过身份验证的用户传递给SQL的文章。然而,我被困在我需要设置SPN的确切位置上。这是我的设置 IIS:应用程序池.Net v4.0集成管道线标识=网络服务 身份验证: ASP.NET模拟=真(已启用) 已启用Windows身份验证 提供者=协商:Kerberos 已禁用内核模式身份验证 IIS服务器: 信任任何服务的委派(仅限kerberos) SQL SERVER: 信任任何服务的委派(仅限kerberos) 根据我对这些设置的理解,我应
应用程序池.Net v4.0
集成管道线
标识=网络服务 身份验证:
ASP.NET模拟=真(已启用)
已启用Windows身份验证
提供者=协商:Kerberos
已禁用内核模式身份验证
IIS服务器:
信任任何服务的委派(仅限kerberos)
SQL SERVER:
信任任何服务的委派(仅限kerberos)
根据我对这些设置的理解,我应该将当前登录的windows帐户传递到IIS服务器,并且应该将该令牌传递给SQL以对我进行身份验证。但是,它只是不断地提示我从站点获取用户/通行证。
我发现这篇文章告诉我需要在“机器”上设置SPN,如下所示:
setspn -A HTTP/[dns name of the site] [machine name]
我不确定我需要什么样的SPN。有人能帮我吗?我在想这有点像
setspn -A HTTP/mywebserver.mydomain.com mywebserver
或者在我的应用程序池中使用设置了SPN的域帐户会更好吗?好的ol'Kerberos。除非有更多的解释,否则我不会把这个答案复杂化。我将根据您的问题假设,我们讨论的是一台服务器,我还将假设它是域连接的。因此,我将为我的清单定义以下内容:
- 让服务器的NetBIOS名称为websvr1
- 让服务器的FQDN(完全限定域名)为websvr1.domain.com
- 当然,我们假设我们在domain.com上
- 让SQL Server的NetBIOS名称为sql1
- 让SQL server的FQDN为sql1.domain.com
- 让SQL Server服务用户为DOMAIN\sqlusr
- 我假设默认的SQL Server端口为1433
- 注册以下SPN
- setspn-S HTTP/websvr1.domain.com websvr1$
- setspn-S HTTP/websvr1 websvr1$
- 请在提供程序中包括协商和NTLM,以便允许回退机制
- 注意:确保协商在供应商列表中位于NTLM的顶部
- 您不需要禁用内核模式身份验证。老实说,我不知道为什么这么多人禁用内核模式身份验证。即使对于作为域帐户运行的应用程序池,也可以使用useAppPoolCredentials=“true”属性允许内核模式身份验证成功解密使用域帐户加密的Kerberos票证
- 其余的设置都很好
- 为确保涵盖所有可能的组合,设置以下SPN:
- setspn-S MSSQLSvc/sql1.domain.com domain\sqlusr
- setspn-S MSSQLSvc/sql1.domain.com:1433 domain\sqlusr
- setspn-S MSSQLSvc/sql1域\sqlusr
- setspn-S MSSQLSvc/sql1:1433域\sqlusr
- 在域\WebVR1计算机帐户的AD委派选项卡中,选择“仅信任此计算机委派给指定服务”选项
- 只使用Kerberos
- 从列表中选择MSSQLSvc\sql1和MSSQLSvc\sql1.domain.com并添加这些服务
希望以上信息能有所帮助。作为更新,我正在调查windows防火墙是否会导致此问题。有人知道默认设置的防火墙是否会阻止Windows身份验证吗?