We're using a SSRS report with URL links that's being displayed in our web application. When we click on a link in the report, it should take you to a page within the web app. However, when we click on the link (link created using SSRS Action property), it appears to be clearing out the session variables. The web app gives the error that we are "no longer logged in".
Any ideas as to how to go about fixing or debugging? Thanks in advance!
Assuming that they are on different servers:
http://blogs.msdn.com/b/knowledgecast/archive/2007/01/31/the-double-hop-problem.aspx
Related
We have a 3-rd party (like a portal) hosting our SSRS Report Viewer inside an iFrame. The source of the iFrame is an ASP.NET web form page with the Report Viewer control. We pass the credentials to the Report Viewer from the code behind and everything works fine. Reports render in the viewer and the aspx page is running on an HTTPS site.
The report developer placed a hyperlink on a report that opens an non-HTTP url to the Report Sever that is supposed to download an Excel file. But the Report Server is behind a DMZ (actually running as a Windows Service and not IIS) and prompts users for credentials and only downloads the Excel file when the Report Server credentials (same ones used by the Report Viewer) are entered. This sounds like a double-hop issue.
Anybody trying to browse to the URL manually also get a prompt until they are authenticated because the SSRS is not in our domain.
TL;DR;
Is there anyway to pass the credentials of the Report Server from within a hyperlink inside the Report Viewer?
Functions as designed. Reports Developer did not really understand implementation details and found a work around.
I am able to setup and run the SSRS 2016 environment for reporting purposes
https://learn.microsoft.com/en-us/sql/reporting-services/web-portal-ssrs-native-mode
When i try to access the portal [ similar to the one explained in above link] i can see all my reports and all is working .
ON top right corner of the web portal it shows the user details who currently accessed the portal and its by default the windows user who logged in to the windows. But in a specific scenario i have multiple windows users and i have to to access this report as a different windows user.
For this now i am doing the steps
close the browser
clear cache
open browser and reload report url [localhost/report/browse]
it will ask to input user name and password and i am able to logged in as different user
But is it possible to implement a logout kind of feature similar to webapps so we can redirects to Login page again in SSRS 2016 Web Portal . Is it possible ? Since i cant see anything in the documentation related to this. Can someone helps to get an idea about the implementation
I have this issue a lot while trying to setup sensible hierarchical SSRS security based on AD Groups and SSRS Server Roles and SSRS Folder Security Roles. After my browser caches creds from my NTLM challenge response, I can open an Incognito browser and login with different creds.
I want to give a link on my SSRS report to a ftp location. For thee same I have dropped a text box on the report and given the link ftp://ftp.mysite.com/file.xls in the Action>>Go to URL setting. I am working with SQL Server 2008 R2.
However when I run the report and click on the link no action happens. However if I change the link to http, http://www.google.com/ then on clicking the link, a window opens.
So its working with http but not ftp. I verified the ftp location and its correct.
Any help will be greatly appreciated.
Vipul
Found the problem. FTP link does not work in report designer. On deploying the report and then running it, the ftp link started working. HTTP however works even from within the designer which caused the confusion in the first place. I dont know whether its by design but couldnt imagine why it should be that way.
I have a logo at the top of all my reports that I have as an embedded image.
These reports are displayed in an ASP.Net web app via the SSRS web service interface - all pretty standard stuff but the image doesn't render - I just get a broken link.
There are a number of possible solutions for this problem and I've tried a few things including setting UseSessionCookies to false in the ConfigurationInfo table.
What I've noticed is that the image displays fine when I change the anonymous account of the consuming web app from a least privileged service account to my own user account.
I do not understand why this and can't work out what special permissions are needed by my web app's service account to be able to view embedded images in reports.
Can anyone help?
Ok, problem solved. Kind of. The problem isn't limited to embedded images and occurs because I am not using the reporting services viewer.
To summarise:
1) when your web application is making the call to the report server it is fully authorized to do so. A SessionID is generated that is ONLY available to the web application account (i.e. the Service account under which the app runs).
2) the web app outputs the RAW HTML4.0 to the screen.
3) the browser receives the HTML and tries to retrieve the images referenced in the HTML.
4) the browser is running as your user account (e.g. domain\username1)
5) the report server receives a request that looks like:
6) now the SessionID listed in the URL is not associated with domain\username1, so report server claims it does not exist.
When you set the app domain to use the domain\username1 account, then the SessionID happens to be associated with your the account so suddently things 'work'. But the moment real users try the system they complain that the images are missing, since their domain\usernameN does not match the app pool account.
The solutions to this problem are as follows:
1) use the Report Viewer control. This will ensure that the URLs received by the Browser will point back to your web app and your web app identity will be used to retrieve them from the report server.
2) in your web app code, parse the HTML4.0 that you get back from the Render call, fetch and cache all the images, re-write the HTML4.0 links to point to the cached images stored by your web app and then send it to the browser (if this seems complicated... then use the Report Viewer control since it make the scenario work)
3) you can try to use the MHTML output format, this will produce a fully qualified report with images embedded in the since binary stream. The consequence of this is it is harder to embed it within an application page... but not insurmountable
I chose to use a variation on 2) because I don't want to use the report viewer. The logo I'm trying to display is already hosted in the calling web app so I just replace the src attribute of the img tag in the response returned from the SSRS report execution service with the url to this location.
I really don't want to use the report viewer as suggested as the best solution to this issue. Why SSRS has to use session information to return something as simple as a logo that is displayed on all reports is beyond me.... It has taken ages to get to the bottom of this and the solution isn't especially pretty....
Is this an external image? Take a look at this MSDN article that explains the permissions needed for retrieving an image:
When the report is previewed in Report Designer, preview uses the
credentials of the user to display the image. When the report is run
on the report server, the report server uses the unattended execution
account to retrieve the image. If the unattended execution account is
not specified, the image is retrieved using no credentials (anonymous
user account). If either of these accounts have insufficient rights to
access the image, the image will not be displayed in the report.
I would check the permissions on the image in the Report Manager.
I don't want to open Report Builder from Report Manager. I want to embed Report Builder into my forms. Is there any way?
This is a very old topic, but I want to post a correct answer since it's one of the first results when searching for "Report Builder".
Simply add a WebBrowser control to your form and on Form_Load, navigate to the URL of the Reporting Services server. You'll have a no-frills "browser" - no back button, no stop, no refresh, but right-clicking on the page will do it.
I do not believe report builder uses anything other than the SSRS API to do its work. You will need to create your own report builder. One way to do this is to play with the microsoft one and monitor the traffic between your browser and the server with HTTPAnalyser or Fiddler. Then you can recreate the same web service calls fom your own app.
Have you had a look at the Report Builder standalone installer? v2.0 was just released in April, so it's possible that you haven't seen it. You can find it here.
I don't think it is possible to do this, given that the Report Builder 2.0 is a standalone application
What you could do however is create a shared data source on the server, and avail the link to the setup file for the installer in your application. Users can then connect to the data source and depending on their skill, create their own reports.
You may be able to subscribe to the appropriate service and build out a front end to talk to the service.
SQL Reporting Services is more of a server based reporting solution. If my embedding into your forms you mean that you want the end user to build reports from inside your application I suggest you look at a third-party tool to do this. I use Developer Express controls and they have a strong and reasonably priced solution for this. The product page is here.
I think it is easy.
You can drag Microsoft.ReportViewer control from toolbox to your webform in studio 2008.
Then you can open report builder to initialize your report.
At the end, that report can be viewed and exported when you run your report.
You should be able to create a hyperlink in your app to startup the click once Report Builder app. But it won't run within your form.
See http://technet.microsoft.com/en-us/library/dd795295.aspx for info on constructing the correct URL.
Paul