默认情况下,Reporting Services 接受指定 Negotiate 和 NTLM 身份验证的请求。 如果部署包含使用基本身份验证的客户端应用程序或浏览器,则必须将基本身份验证添加到受支持的类型列表中。 此外,如果要使用报表生成器,则必须启用对报表生成器文件的匿名访问。
若要在报表服务器上配置基本身份验证,请在 RSReportServer.config 文件中编辑 XML 元素和值。 可以复制并粘贴本主题中的示例以替换默认值。
在启用基本身份验证之前,请验证安全基础结构是否支持它。 在“基本身份验证”下,报表服务器 Web 服务会将凭据传递给本地安全机构。 如果凭据指定本地用户帐户,则由报表服务器计算机上的本地安全机构对用户进行身份验证,用户将获得对本地资源有效的安全令牌。 域用户帐户的凭据将转发到域控制器并由域控制器进行身份验证。 生成的票证对网络资源有效。
如果要降低在传输到网络中域控制器时截获凭据的风险,则需要通道加密(如安全套接字层(SSL)。 基本身份验证本身以明文形式传输用户名,并在 base-64 编码中传输密码。 添加通道加密会使数据包不可读。 有关详细信息,请参阅 在本机模式报表服务器上配置 SSL 连接。
启用基本身份验证后,请注意,在将连接属性设置为向报表提供数据的外部数据源时,用户无法选择 Windows 集成安全 选项。 选项将在数据源属性页中灰显。
注释
以下说明适用于本机模式报表服务器。 如果报表服务器部署在 SharePoint 集成模式下,则必须使用指定 Windows 集成安全性的默认身份验证设置。 报表服务器使用默认 Windows 身份验证扩展插件中的内部功能来支持 SharePoint 集成模式下的报表服务器。
将报表服务器配置为使用基本身份验证
在文本编辑器中打开 RSReportServer.config。
该文件位于 <drive>:\Program Files\Microsoft SQL Server\MSRS12。MSSQLSERVER\Reporting Services\ReportServer。
查找 <
Authentication>。复制以下最符合需求的 XML 结构之一。 第一个 XML 结构提供用于指定所有元素的占位符,下一部分将介绍这些元素:
<Authentication> <AuthenticationTypes> <RSWindowsBasic> <LogonMethod>3</LogonMethod> <Realm></Realm> <DefaultDomain></DefaultDomain> </RSWindowsBasic> </AuthenticationTypes> <EnableAuthPersistence>true</EnableAuthPersistence> </Authentication>如果使用默认值,则可以复制最小元素结构:
<AuthenticationTypes> <RSWindowsBasic/> </AuthenticationTypes>将其粘贴到现有条目上 <
Authentication>。如果您使用多种身份验证类型,请仅添加
RSWindowsBasic元素,但不要删除RSWindowsNegotiate、RSWindowsNTLM或RSWindowsKerberos的条目。若要支持 Safari 浏览器,无法将报表服务器配置为使用多种身份验证类型。 必须仅指定
RSWindowsBasic并删除其他条目。请注意,不能与其他身份验证类型一起使用
Custom。将<
Realm>或<DefaultDomain>中的空值替换为对您的环境有效的值。保存文件。
如果配置了横向扩展部署,请对部署中的其他报表服务器重复这些步骤。
重新启动报表服务器以清除当前打开的任何会话。
RSWindowsBasic 参考指南
配置基本身份验证时,可以指定以下元素。
| 元素 | 必选 | 有效值 |
|---|---|---|
| 登录方法 | 是的 如果未指定值,将使用 3。 |
2 = 网络登录,适用于高性能服务器,用于对纯文本密码进行身份验证。3 = Cleartext 登录,这将保留与每个 HTTP 请求一起发送的身份验证包中的登录凭据,从而允许服务器在连接到网络中的其他服务器时模拟用户。 (默认值)注意:SQL Server 2014 Reporting Services (SSRS)不支持值 0(用于交互式登录)和 1(用于批量登录)。 |
| 领域 | 可选 | 指定一个资源分区,其中包含用于控制对组织中受保护资源的访问的授权和身份验证功能。 |
| DefaultDomain | 可选 | 指定服务器用于对用户进行身份验证的域。 此值是可选的,但如果省略该值,报表服务器将使用计算机名称作为域。 如果计算机是域的成员,则该域是默认域。 如果在域控制器上安装了报表服务器,则所用的域为该计算机控制的域。 |
启用对报表生成器应用程序文件的匿名访问
报表生成器使用 ClickOnce 技术在客户端计算机上下载和安装应用程序文件。 在客户端计算机上启动时,ClickOnce 应用程序启动器将请求报表服务器计算机上的其他应用程序文件。 如果报表服务器配置为基本身份验证,ClickOnce 应用程序启动器将失败身份验证检查,因为它不支持基本身份验证。
若要解决此问题,可以配置对报表生成器程序文件的匿名访问。 这样做允许 ClickOnce 在检索其文件时绕过身份验证检查。 通过执行以下步骤启用匿名访问:
验证报表服务器是否已配置为基本身份验证。
在 ReportBuilder 下创建一个 bin 文件夹,并将四个程序集复制到该文件夹。
将
IsReportBuilderAnonymousAccessEnabled元素添加到 RSReportServer.config 并将其设置为True. 保存文件后,报表服务器会为报表生成器创建新的终结点。 终结点在内部用于访问程序文件,并且没有可在代码中使用的编程接口。 使用单独的终结点,报表生成器可以在报表服务器服务进程边界内自己的应用程序域中运行。(可选)可以指定最小特权帐户,以在不同于报表服务器的安全上下文下处理请求。 此帐户将成为用于访问报表服务器上的报表生成器文件的匿名帐户。 该帐户在 ASP.NET 工作进程中设置线程的标识。 在该线程中运行的请求将传递到报表服务器,无需身份验证检查。 此帐户等效于 Internet Information Services (IIS)中的 IUSR_<machine> 帐户,该帐户用于在启用匿名访问和模拟时为 ASP.NET 工作进程设置安全上下文。 若要指定帐户,请将其添加到报表生成器 Web.config 文件。
如果要启用对报表生成器程序文件的匿名访问,则必须为报表服务器配置基本身份验证。 如果未为“基本身份验证”配置报表服务器,则尝试启用匿名访问时会收到错误。
有关身份验证问题和报表生成器的详细信息,请参阅 “配置报表生成器访问”。
在配置为基本身份验证的报表服务器上配置报表生成器访问权限
通过检查 RSReportServer.config 文件中的身份验证设置,验证报表服务器是否已配置为基本身份验证。
在 ReportBuilder 文件夹下创建 BIN 文件夹。 默认情况下,此文件夹位于 \Program Files\Microsoft SQL Server\MSRS12。MSSQLSERVER\Reporting Services\ReportServer\ReportBuilder。
将以下程序集从 ReportServer\Bin 文件夹复制到 ReportBuilder\BIN 文件夹:
Microsoft.ReportingServices.Diagnostics.dll
Microsoft.ReportingServices.Interfaces.dll
ReportingServicesAppDomainManager.dll
RSHttpRuntime.dll
(可选)创建 Web.config 文件以在匿名帐户下处理报表生成器请求:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.web> <authentication mode="Windows" /> <identity impersonate="true " userName="username" password="password"/> </system.web> </configuration>如果包含 Web.config 文件,则身份验证模式必须设置为
Windows。Identity impersonate可以是True或False。如果不希望 ASP.NET 读取安全令牌,请将其设置为
False。 请求将在报表服务器服务的安全上下文中运行。如果要 ASP.NET 从宿主层读取安全令牌,请将其设置为
True。 如果将其设置为True,则还必须指定userName并password指定匿名帐户。 指定的凭据将确定发出请求的安全上下文。
将 Web.config 文件保存到 ReportBuilder\bin 文件夹中。
在“服务”部分中打开 RSReportServer.config 文件,找到
IsReportManagerEnabled并添加以下设置:<IsReportBuilderAnonymousAccessEnabled>True</IsReportBuilderAnonymousAccessEnabled>保存 RSReportServer.config 并关闭文件。
重启报表服务器。