正如标题所述,尝试使用 ASP.NET webapp 时出现以下错误:
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. Reason: Token-based server access validation failed with an infrastructure error. Check for previous errors. [CLIENT: 192.168.x.x]
这是来自 SQL 服务器上的“应用程序”日志。我目前有一个集群设置(使用 Microsoft 故障转移集群),尽管尚未配置第二个节点。我试过配置 SPN:
setspn -L myserviceaccount
Registered ServicePrincipalNames for <DN>:
MSSQLSvc/*SQL.corp.*.local:1433
MSSQLSvc/*SQL.corp.*.local
事实上,SQL Server 确实根据其日志正确注册了它:
Message
The SQL Server Network Interface library successfully registered the Service Principal Name (SPN) [ MSSQLSvc/my.sql.fqdn ] for the SQL Server service.
但是,查询SELECT auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@spid ;
返回NTLM
而不是Kerberos
。我已经重新启动了几次服务器,但无济于事。SQL Server 在具有适当委派权限的域用户帐户下运行。
我错过了什么吗?
更新:
根据上述查询,我成功地让 SQL Server 使用“Kerberos”,但我仍然无法让 IIS 级别正常工作。
这被称为 SQL Server 和 IIS 之间的“双跳”问题。看起来您可能不信任 IIS 服务器进行委派。
这是使用 Kerberos 使用 IIS 设置 SQL Server 时要做的事情的一个很好的清单。
这是关于这种情况的一个很好的入门。匿名登录是问题的一个问题。