2009-02-11 53 views
4

我已经创建了ASP.NET 2.0 Web应用程序,并且希望将SSRS 2005用于报告目的。SSRS 2005 - 配置用户身份验证/授权

Web应用程序使用表单身份验证和自定义角色进行授权。我创建了报告并将其部署到我们的SQL Server 2005框中。

我有两个选择,整合报告到我的应用程序:从我的应用程序内

  1. 链接到SSRS。该链接将具有指定的参数和选项。我确保链接仅显示授权用户,并链接到具有适当参数的正确报告。

  2. 使用ReportViewer控件并使用它显示报表。所有处理将由SSRS完成

但是,我不确定在Reporting Services框中IIS上配置安全性的最佳方法。目前它被设置为Windows集成身份验证。报告服务也有我的用户名和浏览器角色。

并非我的应用程序的所有用户都有AD登录。此外,该应用程序在互联网上,我不想打开超过必要的SSRS。同时,我希望它对我们的用户来说是无缝的,因为我不希望SSRS提示输入用户名和密码。

完成此操作的最佳方法是什么?我应该创建一个虚拟AD用户,然后使用它来在ASP.NET应用程序和SSRS之间进行通信?如果不是这样,那么实现我需要的一切的最简单方法是什么?

回答

2

我们使用Web服务界面和报告查看器控件使用同一个AD帐户为所有用户与SSRS进行通信。至于权限,我们有自定义访问列表 ,在向用户提供报告之前,asp.net页面会检查它。这是附加到用户名。我们将SSRS盒子保留在互联网上,用户只能通过访问列表来控制访问列表控制。

对于报告视图控制,我们必须创建一个自定义凭据类,以传递从继承的AD用户名和密码IReportServerCredentials。 AD用户名和密码保存在xml文件中。

希望这会有所帮助。

+0

Fahad,这个AD账户是一个不存在的用户,只用于SSRS? – cwius 2009-02-12 13:56:02

+0

是的。只需提供足够的权限即可访问SSRS。此用户还需要具有DataReader访问数据库的权限。 – Fahad 2009-02-12 16:53:07

1

1法赫德

除了使用IReportServerCredentials接口,可以使用ReportServerConnection的一个实例,并将其分配到报告观看者控制。我们将用户名,密码和域(如果需要)存储在web.config文件中。

ReportServerConnection credentials = new ReportServerConnection('username', 'password'); 
ReportViewer1.ServerReport.ReportServerCredentials = credentials; 
0

我们最近将SSRS(SQL Server 2008 R2)的SSO身份验证方法与使用表单身份验证的自定义Web应用程序集成在一起。我发现这两篇文章非常有用,并概述了为完成我们的SSO解决方案所需做的一切。

Reporting Services Single Sign On (SSO) Authentication - Part 1

Reporting Services Single Sign On (SSO) Authentication - Part 2

以下是基本的步骤,但我建议你仔细阅读这些文章:

  1. 创建验证管理器,它会处理特定的身份验证系统
  2. 为SSRS创建您的登录页面(我们的页面,例如,只需调用LogonUser,然后重定向到报表管理器) - 这是ne cessary只有当你想使用SSRS的报表管理
  3. 到您的项目添加ReportingService2010 & ReportExecution2005服务后,您会希望创建它们围绕代理包装和覆盖顺序GetWebRequest & GetWebResponse方法传递的SSRS身份验证票证SSRS和您的应用程序。
  4. 创建一个实现IAuthenticationExtension & IAuthorizationExtension您的自定义验证模块(见第2部分)
  5. 配置SSRS能够使用自定义窗体身份验证模块
  6. 如果你想使用报表管理器,然后你要确保配置SSRS报告管理器来处理您的应用程序授权凭证:Configure Report Manager to Pass Custom Authentication Cookies

完成这些步骤后,您可以使用报告管理器或直接在应用程序中实施Web服务。