安全扩展概述 - Reporting Services (SSRS)

Reporting Services 安全扩展插件支持用户或组的身份验证和授权;也就是说,它使不同的用户能够登录到报表服务器,并根据其标识执行不同的任务或操作。 默认情况下,Reporting Services 使用基于 Windows 的身份验证扩展插件,该插件使用 Windows 帐户协议来验证声明在系统上拥有帐户的用户的标识。 Reporting Services 使用基于角色的安全系统为用户授权。 Reporting Services 基于角色的安全模型与其他技术的基于角色的安全模型类似。

因为安全扩展插件基于可扩展的开放式 API,所以您可以在 Reporting Services 中创建新的身份验证和授权扩展插件。 以下示例演示使用基于窗体的身份验证和授权的典型安全扩展实现:

Screenshot of the Reporting Services security extension process.

如图所示,身份验证和授权将按以下所示发生:

  1. 用户尝试使用 URL 访问 Web 门户,然后被重定向至为客户端应用程序收集用户凭据的窗体。

  2. 用户向该窗体提交凭据。

  3. 用户凭据通过 LogonUser 方法提交至 Reporting Services Web 服务。

  4. Web 服务调用客户提供的安全扩展插件,并验证相应的用户名称和密码是否存在于自定义安全机构中。

  5. 进行身份验证之后,Web 服务创建一个身份验证票证(称为“cookie”),管理票证,然后为 Web 门户的主页验证用户角色。

  6. Web 服务将此 cookie 返回至浏览器,然后在 Web 门户中显示相应的用户界面。

  7. 对用户进行身份验证之后,在 HTTP 标头中传送此 cookie 的同时浏览器向 Web 门户发出请求。 这些请求用于响应 Web 门户中的用户操作。

  8. 此 cookie 在 HTTP 标头中与请求的用户操作一起传送至 Web 服务。

  9. 验证 Cookie,如果 Cookie 有效,报表服务器将返回与报表服务器数据库中请求的操作相关的安全描述符和其他信息。

  10. 如果此 cookie 有效,报表服务器将调用安全扩展插件检查用户是否有权执行特定操作。

  11. 如果用户已有相应权限,则报表服务器将执行请求的操作,并将控制权返回调用方。

  12. 用户经过身份验证后,报表服务器进行 URL 访问都会使用此 cookie。 此 cookie 在 HTTP 标头中传送。

  13. 用户继续请求报表服务器上的操作,直到会话结束。

何时实现安全扩展

建议尽量使用 Windows 身份验证。 但是,在以下两种情况下,Reporting Services 的自定义身份验证和授权可能适用:

  • 你有一个无法使用 Windows 帐户的 Internet 或 Extranet 应用程序。

  • 您拥有自定义用户和角色并且需要在 Reporting Services 中提供匹配的授权方案。