Monday, March 26, 2012

Reporting Services 2000 web-services rendering

We are using Reporting Services 2000 and we have a project in which we need to implement a security layer in a customized ASP.NET application to authenticate and authorize requests to view reports.

The client's needs are secure / restricted access via the public internet, all requests must go through the ASP.NET application (the report server URL must NEVER be visible) and the client must be able to print the report using the special ActiveX print plug-in for the reports (otherwise the Internet Explorer print functionality will seriously mess up the output)

There are two approaches we have considered with pros and cons:

a.) render the report using the ReportViewer control. The problem is, this control is just a wrapper around query-based accessing of the Report Server. This exposes the RS URL and ultimately, the resulting HTML from the RS will have SRC tags that expose the Report Server. The advantage is the client retains full functionality that the default rendering interface of RS would ordinarily have.

b.) render the report programmatically using the SOAP web service and render each individual stream. The problem with this is the development is far more difficult and we lose the customized printing functionality of the ActiveX control

We are proposing to use a variation of option a.) by having our ASP.NET page delegate a request via a HttpRequest object to the Report Server and then performing either a regex or XSLT transformation on the returned stream to replace all SRC tags to a resource into a redirect to an ASP.NET page that will be parameterized by the streamid of a report resource. This page would simply return the result as a byte stream. This would keep all the work server-side and never expose the server URL. This way we preserve the Report Server interface (and the precious print functionality) while masking the URLs.

There must be a simpler approach than the one I have described. Can anyone come up with a solution that will fulfill our requirements? Will Reporting Services 2005 fix this?

At the very least, is there a way to control the printing (without exporting to PDF) when using the web service API to render the report programmatically?|||I did something similar where we used the MeadCo ScriptX print control to modify some basic print settings (like margin, page setup, and header and footers). Just need to add a script block to the end of the rendered html to modify the print settings.|||

There is no better approach to solve the problem in RS 2000. Actually, there is still a flaw in your approach if the report contains drillthrough report (hyperlink to other reports) or subreport, it will still reveal the URL of the report server to the customer.

In RS2005, this problem is solved by the new ReportViewer control. You may get more information about the newly introduced in ReportViewer via the following website:

www.gotreportviewer.com

No comments:

Post a Comment