Tuesday, February 14, 2012

Cross Domain report authentication

Hi all,
I have a reporting server(with reports) on "domain1". and the users who
login into web applications which is on a different domain say
"domain2" to access the reports.
I used to have a url access to the reporting server. but when the user
tries to generate a report it ask for authentication (the login dialog
window ). As the user is not on the same domain as the reports server I
created a user on the reports server machine and passed on the user
name and password, so that users can login with that id/password. It
worked fine but with the login dialog window popping up.
Now they want to get rid of the pop up login dialog window.
I looked at some books and tried to use a web service instead of a url
access to run reports. but it throws me some soap exception.
Exception below:
--
System.Web.Services.Protocols.SoapException: The requested
functionality is currently not supported -->
Microsoft.ReportingServices.Diagnostics.Utilities.NotYetSupportedException:
The requested functionality is currently not supported at
Microsoft.ReportingServices.Library.Soap.ParameterValue.ThisArrayToNameValueCollection(ParameterValue[]
parameters) at
Microsoft.ReportingServices.WebServer.ReportingService.Render(String
Report, String Format, String HistoryID, String DeviceInfo,
ParameterValue[] Parameters, DataSourceCredentials[] Credentials,
String ShowHideToggle, Byte[]& Result, String& Encoding, String&
MimeType, ParameterValue[]& ParametersUsed, Warning[]& Warnings,
String[]& StreamIds) -- End of inner exception stack trace -- at
Microsoft.ReportingServices.WebServer.ReportingService.Render(String
Report, String Format, String HistoryID, String DeviceInfo,
ParameterValue[] Parameters, DataSourceCredentials[] Credentials,
String ShowHideToggle, Byte[]& Result, String& Encoding, String&
MimeType, ParameterValue[]& ParametersUsed, Warning[]& Warnings,
String[]& StreamIds)
---
I have tried changing the settings on the IIS for the reportserver but
of no use.
I was thinking if I had to implement Custom Secuirty Extenstions.
Do I have to do that'
I am trying to figure out how easy would that be to do.
Can anyone guide me step by step procedure to get wat I am trying to
achieve. I just dont need the login dialog window to come up and need
to pre authenticate the user whenever he logs into the web application
some way.
Any code snippets/helpful links or insight on how to workaround this
problem will be greatly appreciated.
Thanks a lot in advance.
Klayan.Can anyone Help me here please...I need this very badly.
Thanks,
Kalyan.|||I am also trying to use the method LogonUser to authenticate the user
but it gives me an
Error: "The request failed with HTTP status 403: Forbidden." message. I
checked the permission on all the folders, they have read/write, and
also IIS authentication set to "enabled anonymous access".
I am not able to figure out how else to preauthenticate the reporting
server..
Please Help.
Thank you|||Kalyan wrote:
> Hi all,
> I have a reporting server(with reports) on "domain1". and the users who
> login into web applications which is on a different domain say
> "domain2" to access the reports.
> I used to have a url access to the reporting server. but when the user
> tries to generate a report it ask for authentication (the login dialog
> window ). As the user is not on the same domain as the reports server I
> created a user on the reports server machine and passed on the user
> name and password, so that users can login with that id/password. It
> worked fine but with the login dialog window popping up.
> Now they want to get rid of the pop up login dialog window.
> I looked at some books and tried to use a web service instead of a url
> access to run reports. but it throws me some soap exception.
> Exception below:
> --
> System.Web.Services.Protocols.SoapException: The requested
> functionality is currently not supported -->
> Microsoft.ReportingServices.Diagnostics.Utilities.NotYetSupportedException:
> The requested functionality is currently not supported at
> Microsoft.ReportingServices.Library.Soap.ParameterValue.ThisArrayToNameValueCollection(ParameterValue[]
> parameters) at
> Microsoft.ReportingServices.WebServer.ReportingService.Render(String
> Report, String Format, String HistoryID, String DeviceInfo,
> ParameterValue[] Parameters, DataSourceCredentials[] Credentials,
> String ShowHideToggle, Byte[]& Result, String& Encoding, String&
> MimeType, ParameterValue[]& ParametersUsed, Warning[]& Warnings,
> String[]& StreamIds) -- End of inner exception stack trace -- at
> Microsoft.ReportingServices.WebServer.ReportingService.Render(String
> Report, String Format, String HistoryID, String DeviceInfo,
> ParameterValue[] Parameters, DataSourceCredentials[] Credentials,
> String ShowHideToggle, Byte[]& Result, String& Encoding, String&
> MimeType, ParameterValue[]& ParametersUsed, Warning[]& Warnings,
> String[]& StreamIds)
> ---
> I have tried changing the settings on the IIS for the reportserver but
> of no use.
> I was thinking if I had to implement Custom Secuirty Extenstions.
> Do I have to do that'
> I am trying to figure out how easy would that be to do.
> Can anyone guide me step by step procedure to get wat I am trying to
> achieve. I just dont need the login dialog window to come up and need
> to pre authenticate the user whenever he logs into the web application
> some way.
> Any code snippets/helpful links or insight on how to workaround this
> problem will be greatly appreciated.
> Thanks a lot in advance.
> Klayan.
>
You may implement custom authentication if you want to get rid of
windows one at all.
I tryed few ways:
1) using windows account as a type of transport to identify real person
mapped onto it. (then you need some kind of lookup mechanism to
impersonate windows user on server side)
2) using IP dinamically mapped to some kind of authority.
this may sound unsecure, but works excellent in certain environments
(for small intranets with unique IPs and proxy forbidden).
I used second approach with Domino server particularly,where notes user
IP being used to identify person on RS side.No bloody popups,-no nothing :)|||Hey Pisla,
Thanks a lot for the insight.
Can you tell me how to do the step 2 you have mentioned. I am really
clueless of wat you are talking.
Like your step 1, I tried to pass the windows credentials in the
LogonUser method ...hardcoded them ...but still it doesnt authenticate
the cookie on the rs server.
I very badly need to get this popup thing go.HELP.
Thanks a lot,
Kalyan.|||Kalyan wrote:
> Hey Pisla,
> Thanks a lot for the insight.
> Can you tell me how to do the step 2 you have mentioned. I am really
> clueless of wat you are talking.
> Like your step 1, I tried to pass the windows credentials in the
> LogonUser method ...hardcoded them ...but still it doesnt authenticate
> the cookie on the rs server.
> I very badly need to get this popup thing go.HELP.
> Thanks a lot,
> Kalyan.
>
Kalyan, we're about to sell this solution so i'm afraid i may not just
give it to you for free.
You may play thou with custom authentication example to implement the
same stuff.|||Hi Pisla,
Can you tell me when you will be ready with the solution.
May be I can buy it from you guys. I have given up on the problem.
Its driving me crazy..
Please let me know if I can buy the solution and also the price.
Thanks a lot for the Help.
Kalyan.|||Kalyan,
I presume you are using SQL 2000 RS. By default the SQLRS supports only
windows authentication so you woudn't be able to display the reports outside
your domain using ReportViewer control which internally uses URL invocation
mechanism.
To get rid of this, you need to use Reporting Services Web Service which is
provided as part of SQL2000 RS installation. Just create a proxy and request
the type of format you want by creating a Network Crenditials class of your
choice of user. The render method call will return you the byte array, which
you can write to response object or whatever you need to do with that. The
flip side of it is you need to code for all the pagination, formatting using
webservice calls. So more programming.
Thanks,
Live_Love_Laugh
"Kalyan" wrote:
> Hi Pisla,
> Can you tell me when you will be ready with the solution.
> May be I can buy it from you guys. I have given up on the problem.
> Its driving me crazy..
> Please let me know if I can buy the solution and also the price.
> Thanks a lot for the Help.
> Kalyan.
>

No comments:

Post a Comment