求助:SSRS 2016报表嵌入网站后如何消除Windows身份验证弹窗
解决SSRS 2016嵌入网站的匿名认证弹窗问题
搞定这个SSRS匿名访问的问题其实没那么复杂,我之前处理过好几个类似的场景,一步步跟着配置就行:
1. 先开启SSRS本身的匿名认证支持
- 打开SSRS配置管理器,连接到你的报表服务器实例。
- 切换到「身份验证」选项卡,勾选**“匿名身份验证”**,点击应用保存。SSRS 2016默认是关闭匿名的,这一步必须手动开启。
- 找到RSReportServer.config配置文件(默认路径大概是
C:\Program Files\Microsoft SQL Server\MSRS13.MSSQLSERVER\Reporting Services\ReportServer,记得根据你的实例名调整路径),用文本编辑器打开:- 找到
<AuthenticationTypes>节点,确保里面包含<RSWindowsAnonymous/>,最终应该是这样:<AuthenticationTypes> <RSWindowsAnonymous/> <RSWindowsNegotiate/> <RSWindowsNTLM/> </AuthenticationTypes> - 再找到
<Security>节点下的<Extension>,确认匿名认证扩展是启用状态:<Extension Name="Anonymous" Type="Microsoft.ReportingServices.Authorization.AnonymousAuthorization, Microsoft.ReportingServices.Authorization"/>
- 找到
- 重启报表服务器服务,让配置生效。
2. 配置IIS的匿名访问(如果SSRS通过IIS托管)
- 打开IIS管理器,找到报表服务器对应的站点。
- 进入「身份验证」功能,先禁用Windows身份验证,然后启用匿名身份验证。
- 别忘了给匿名身份验证用的账户(默认是IUSR)设置权限:要能访问报表服务器的文件目录,还要有SQL Server报表数据库(ReportServer和ReportServerTempDB)的读取权限。
3. 给报表/文件夹设置匿名访问权限
- 打开报表管理器(一般是
http://<服务器名>/Reports),用管理员账号登录。 - 找到你要嵌入的报表或者上级文件夹,点击「安全」选项卡。
- 添加**“Everyone”用户(或者你指定的匿名用户组),给它分配“浏览”**权限。如果是文件夹的话,记得勾选「将此权限应用于所有子项」,这样子报表也能继承权限。
4. 嵌入网站时的细节注意
- 嵌入报表时,尽量用报表管理器里提供的「嵌入」链接,或者用ReportViewer控件。
- 如果是ASP.NET项目用ReportViewer,要在web.config里把身份验证模式设为None:
<system.web> <authentication mode="None"/> </system.web> - 要是网站和SSRS不在同一个域,得在RSReportServer.config里配置CORS,找到
<Add Key="AccessControlAllowOrigin" Value="*"/>(或者指定你的网站域名,更安全)。
常见排查点
- 如果还是弹身份验证窗口,先检查报表服务器的防火墙,确保网站服务器能访问SSRS的端口(默认80或443)。
- 确认RSReportServer.config里的
<UrlRoot>设置的是正确的公网/内网地址,地址不匹配也可能触发身份验证。 - 再核对下SQL Server数据库的权限,确保匿名用户对应的账户能正常访问ReportServer和ReportServerTempDB。
内容的提问来源于stack exchange,提问作者Manuel Alejandro Rodriguez Tor
相关产品推荐
相关产品推荐

