Reporting Services 安全扩展插件支持用户或组的身份验证和授权;也就是说,它使不同的用户能够登录到报表服务器,并根据其标识执行不同的任务或作。 默认情况下,Reporting Services 使用基于 Windows 的身份验证扩展,该扩展使用 Windows 帐户协议来验证声明在系统上拥有帐户的用户的身份。 Reporting Services 使用基于角色的安全系统来授权用户。 Reporting Services 基于角色的安全模型类似于其他技术的基于角色的安全模型。
由于安全扩展插件基于开放且可扩展的 API,因此可以在 Reporting Services 中创建新的身份验证和授权扩展插件。 下面是使用基于窗体的身份验证和授权的典型安全扩展实现的示例:
如下图所示,身份验证和授权如下所示:
用户尝试使用 URL 访问报表管理器,并重定向到收集客户端应用程序的用户凭据的表单。
用户将凭据提交到表单。
用户凭据通过 LogonUser 该方法提交到 Reporting Services Web 服务。
Web 服务调用客户提供的安全扩展插件,并验证自定义安全机构中是否存在用户名和密码。
身份验证后,Web 服务将创建身份验证票证(称为“cookie”),管理票证,并验证用户对报表管理器主页的角色。
Web 服务将 Cookie 返回到浏览器,并在报表管理器中显示相应的用户界面。
对用户进行身份验证后,浏览器在 HTTP 标头中传输 Cookie 时向报表管理器发出请求。 这些请求响应报表管理器应用程序中的用户作。
Cookie 在 HTTP 标头中传输到 Web 服务以及请求的用户作。
Cookie 已验证,如果 Cookie 有效,报表服务器将返回与报表服务器数据库中请求的作相关的安全描述符和其他信息。
如果 Cookie 有效,报表服务器会调用安全扩展插件,以检查用户是否有权执行特定作。
如果用户获得授权,报表服务器将执行请求的作,并将控制权返回到调用方。
对用户进行身份验证后,对报表服务器的 URL 访问使用相同的 Cookie。 Cookie 在 HTTP 标头中传输。
用户继续请求报表服务器上的作,直到会话结束。
何时实现安全扩展插件
建议尽可能使用 Windows 身份验证。 但是,在以下两种情况下,Reporting Services 的自定义身份验证和授权可能适用:
你有一个无法使用 Windows 帐户的 Internet 或 Extranet 应用程序。
你有自定义的用户和角色,需要在 Reporting Services 中提供匹配的授权方案。