我有一个 ASP.NET Web 应用程序,它使用对 SSRS Web 服务 ReportService2005.asmx 和 ReportExecution2005.asmx 的调用。
使用的技术是 ASP.NET 3.5、Visual Studio 2008 和 SQL Server 2008 R2(我使用的是 ReportService2005,因为我使用的是使用它而不是 ReportService2010 的代码库)
用户使用表单身份验证登录系统。然后用户导航到报告页面。用户可以属于任意数量的报告组(每个组可以包含任意数量的报告)。报表组、它们的关联报表和分配给报表组的用户由 Web 应用程序中的一个页面控制,并存储在 Web 应用程序数据库(不是 SSRS 数据库)中的一系列表中。
目前对 ReportService2005.asmx 和 ReportExecution2005.asmx 的访问是通过使用服务器的默认凭据来实现的。这安全吗?服务器上的所有报告都可以通过这个默认凭据进行访问。对用户可以看到的报告的唯一限制将由前端应用程序强制执行,而前端应用程序可能会使用例如 Javascript 进行黑客攻击?
我想要的是一种方法,我可以取消 Web 应用程序数据库中的一系列报告/用户/组表并使用 SSRS 模式。例如:
用户 A(A 公司的员工)属于财务报表组和营销报表组。Finance 组包含 Finance Report 1 和 Finance Report 2。Marketing 组包含 Marketing Report 1。
上述报表将放置在报表服务器上的 Finance 和 Marketing 文件夹中(使用报表管理器)。
然后,我可以在报表服务器上创建一个 Windows 用户(我们称之为 MarketingFinance),并为该用户授予对 Marketing 和 Finance 文件夹的适当权限。然后,用户 A 必须在他/她的 .net 会员提供者配置文件中有某种标志,以链接到 MarketingFinance 用户。
但问题在于,我设想每次创建/修改自定义报表组时都必须在报表服务器上创建一个新的 Windows 用户。使用上面的示例,假设创建了一个销售报告组并将用户 B 添加到其中。现在,报表服务器上必须有一个 Windows 用户 (Sales),并设置了适当的权限来访问 Sales 文件夹。Web 应用程序的多个客户端也将需要他们自己版本的销售/营销等组,这可能会使 Windows 用户的数量增加到数千!
我是 SSRS 的新手,所以可能会以错误的方式看待这个问题——我可以使用角色来简化这个问题吗?
此外,各公司的报告可能基本相同(公司是指应用程序的客户),但每家公司可能希望将报告设置在不同的文件夹中。即公司 A 财务文件夹中包含报表 A、报表 B 和报表 C,但公司 B 财务文件夹中只有报表 A。大概报告链接会阻止我在两个文件夹中都有报告 A 的 2 个物理副本?