SSRS数据源连接失败:NT AUTHORITY\ANONYMOUS LOGON登录失败求助
排查SSRS Kerberos委派匿名登录失败问题
针对你遇到的SSRS连接SQL Server时出现NT AUTHORITY\ANONYMOUS LOGON登录失败的问题,按以下步骤逐一排查:
1. 修正SQL Server SPN的注册账户
SQL Server的SPN必须注册到SQL Server服务运行的AD账户(或计算机账户,若服务用本地系统),而非SSRS服务账户。你当前将MSSQLSvc/SQLSRV:1433注册到了SSRS账户DOMAIN\ssrs_user,这会导致SPN冲突或委派失败:
- 执行
setspn -l DOMAIN\sql_service_account(若SQL服务用本地系统,替换为setspn -l DOMAIN\SQLSRV$),查看是否已存在MSSQLSvc/SQLSRV:1433和MSSQLSvc/SQLSRV.DOMAIN.local:1433。 - 如果SSRS账户下的
MSSQLSvc/SQLSRV:1433是多余的,执行setspn -d MSSQLSvc/SQLSRV:1433 DOMAIN\ssrs_user删除该SPN。
2. 调整SSRS服务账户的委派配置
将宽泛的委派改为约束委派,精准指定可委派的SQL Server服务:
- 在ADUC中找到
ssrs_user账户,打开属性→委派选项卡。 - 选择“信任此用户仅对指定服务进行Kerberos委派”。
- 点击“添加”→“用户或计算机”,找到SQLSRV服务器(或SQL服务运行的账户),选择
MSSQLSvc类型的服务条目(包含SQLSRV和SQLSRV.DOMAIN.local)。
3. 优化RSReportServer.config配置
确保配置仅启用Kerberos相关认证,避免NTLM干扰:
- 打开
C:\Program Files\Microsoft SQL Server Reporting Services\SSRS\ReportServer\RSReportServer.config - 修改
AuthenticationTypes节点为:<AuthenticationTypes> <RSWindowsNegotiate/> <RSWindowsKerberos/> </AuthenticationTypes> - 确认以下配置项为
true:<WindowsAuthenticationEnabled>true</WindowsAuthenticationEnabled> <EnableAuthPersistence>true</EnableAuthPersistence> - 修改后重启SSRS服务。
4. 检查SSRS数据源的凭据设置
在SSRS数据源配置页面,必须选择:
- “使用当前用户的Windows凭据连接数据源”
- 不要勾选“模拟已验证的用户”(除非有特定业务需求)
5. 验证Kerberos认证状态
- 在SSRSSRV服务器上执行
klist purge清除Kerberos缓存,然后访问报表服务器,再执行klist查看是否生成了http/SSRSSRV.DOMAIN.local的Kerberos票据,以及是否能获取到SQL Server的服务票据。 - 在SQLSRV的SQL Server日志中查看登录失败的详细记录,确认是否存在Kerberos认证失败的具体原因。
- 执行
setspn -X全局检查是否存在SPN重复的情况,排查潜在冲突。
6. 确认DNS解析正确性
Kerberos依赖正确的DNS解析:
- 在SSRSSRV、SQLSRV及访问SSRS的客户端上,分别ping对方的主机名和FQDN,确认返回的IP地址正确。
- 检查反向DNS(PTR记录)是否配置正确,确保IP能解析回对应的主机名/FQDN。
内容的提问来源于stack exchange,提问作者Something_Amusing
相关产品推荐
相关产品推荐

