hiding report structure in SSRS - sql-server

I am using Visual Studio 2010 to design SSRS reports.
The report is successfully published and will have a link such as below:
http://hostname/ReportServer/Pages/ReportViewer.aspx?%Reports%2fDistributed&rs:Command=Render&rp_db_catalog=ts
Now when the user goes to the link,
http://hostname/ReportServer
it will show them the rest of the reports available which is a security concern.
Is there a way to hide the report structure from the user?
Thanks,
Bruce

I don't think you can "hide" it, nor should you. You'll need to use another method to secure your reports. Here are a few options:
Secure within the web frontend you're currently using. You'll need to set up user accounts and roles, and permissions for folders. Here's the MSDN starting point, from there you can get to securing folders.
Deliver your reports through Sharepoint, see this bit of MSDN for a starting point.
Integrate ssrs in your application e.g. using the SOAP webservices, an asp.net or winforms app, or through URL access (that last option may even be quite close to what you want).

Related

Embed SSRS Report Viewer in Flask application

Context: I have a web application written in Python using Flask. I need to embed some reporting utility in the application and would like to use SSRS.
Question: I've investigated a few MSDN resources including the following:
(https://learn.microsoft.com/en-us/sql/reporting-services/report-server-sharepoint/add-the-report-viewer-web-part-to-a-web-page?view=sql-server-ver15)
It appears that this route would require implementing Sharepoint. Is this true? Is there any way to embed SSRS reports in webpages without needing to use Sharepoint?
Sharepoint is definitely not required. But there are different options with different tradeoffs.
Simplest is to add rs:embed=true to a report URL and load it in an iframe, which works great if your users can authenticate to SSRS using Windows Integrated Auth. This doc details how to embed into SharePoint using this technique, but it works equally well for any custom app, so long as the user can authenticate to SSRS.
Other options are outlined here: Integrating Reporting Services into Applications
The most useful one is SSRS URL Access.

Silverlight Sharepoint 2010 web part windows authentication

I'm trying to authenticate my silverlight application to get windows user name, which then I use to get some further information. Have looked it up, but the answers I found were about configuring the web service to get it. Is there a way, to get windows credentials strictly in Silverlight? I cannot find .Credentials, the only thing I see is .ClientCredentials, but apparently it doesn't show the required information. I am getting the string "System.ServiceModel.Security.UserNamePasswordClientCredential". It actually allows me to set up the name, not retrieve it. Also there is a web service called authentication.asmx, but as before it applies to other purposes. Neither do I have any web service I could reference to and configure them. Or am I missing something? Perhaps I can retrieve the windows credential by NTLM or Kerberos? I am using Visual Web Developer 2010 Express with Silverlight 5.
My Experience is that the Membership framework that is present in the asp.net world is not available in silverlight. In order to achieve something similar I had to implement a web service (WCF) that was directed at the domain's active directory (ldap) server. Silverlight is a very strict framework in terms of interoperability, its good for security but has some limitations.
I am not sure about your level of knowledge of the active directory but here is a link that deal with a lot of the possible operations and has sample C# code to go along.
http://www.codeproject.com/Articles/18102/Howto-Almost-Everything-In-Active-Directory-via-C#40a

How get data from Microsoft Outlook with Silverlight?

I need to get information from Microsoft Outlooks calendar to show it on calendar application which I made with Silverlight.
I can get all needed information with Silverlight 4 but in trusted mode and my application must be installed on users computer and work as Desctop application.
But I need for my application to work on browser.
Is it possible or the only way is using it as Desctop application?
Thanks.
No, you can't. The best that you can do is to create a web service to communicate with Silverlight and then an Outlook add-in to communicate with that web service.
I did it with WebDav server. I published my calndar to WebDav server. Calendar is on .ics format so I can read all information from it as with other files and then parse it.
My WCF service is on the same computer in which is WebDav so I can get all needed information with Silverlight. I decided to use this version because in this case user have no need to install .Net freamework on his computer. I also found that user can publish his calendar from internet so this version do what I need.
#Otaku thanks for your answer, it was very nice solution and it is the best version for people who can't(or don't want) use WebDav.
Here is how to publish it.
EDIT: In this case calendar opens as readonly because it located on server and cannot be synchronized with existing calendar without add-in, so #Otaku's answer is right.
My version can be used if you don't need synchronization.

Web Analytics & Stats

We want to add tracking statistics to a web application we are building but are pretty unsure of how to go about it. (i.e. clicks, pageviews, unique visits etc)
Does anyone have any articles on the best way to go about incorporating tracking data into an application ? i.e. javascript tracking or IIS etc ?
We want to add tracking in as a ASP.NET MVC module - but we are unsure as to the best way to actually get the data and essentially 'track' this information ?
If anyone could help out - much appreciated.
Edit: just to be clear, we want to do this in-house and present the stats to our users as an additional fee module?
You can turn on the logging for IIS and then use the SQL Server Report Server Pack for IIS. It comes with many canned reports for your sites stats and then you could take it from there with your own custom reports.
You could also just use log parser to get the stats into a SQL Server DB and then you could use SQL from their to analyse and roll your own app.
Either way, you could modularize this and sell it as an add-on to your customer base.
You could use Piwik, you just need PHP version 5.1.3 or greater and MySQL version 4.1 or greater. As they say in their website, "Piwik aims to be an open source alternative to Google Analytics."
They have a demo on the official website so you can see if it's what you're looking for.
Google analytics is a popular service. You just insert a bit of javascript on every page that contains your sites name and Google tracks the data and provides all the report on a handy web based dashboard.
It's not an ASP.net MVC module like what you mentioned, but it will certain track stats for you and will be a lot simpler to set up than trying to code or integrate anything yourselves.
I'd look at analytics to begin with and only branch out to something more complex if it doesn't meet your requirements.
klabranche provided a holistic answer in terms of using logs of web server. I think using web server log is a a great way to analyse data of your web application.
That being said, depend on your web application and the scope of your analytics, just relay on web server log is not a good way to.
As you may know, web log does not record users behaviors like clicking certain tabs which may not trigger a web server request. Obviously your web log has no idea whether users clicked that tab or not, this may hurt your analyse.
Another you need to know is browser cache, this may create another black hole in your data.
RECAP
If you want to do a holistic analytics, you need to use two approaches, one is JavaScrip tag, another one is web log. Since both of them have shortages, combining them together will give you a complete picture.
Hope this helps

Using the EPiServer Communities API from a console app?

I'd like to write a console or winforms application that will interact with the EPiServer database. Since I don't want to muck about in the deep inards of the database I'd like to use the EPiServer API.
However, all the examples are using the "CommunitySystem.CurrentContext" which is null when running outside the website.
Now, I'm going to transfer a large amount of data from a legacy system to EpiServer Community and I really don't want to do that from a web page but from an application I have a little more control of.
Is there any way I can use the API from outside the web context?
I'm not that familiar with the community model. But... I've had no problems at all running huge imports through a web form (or control). The key (besides having disabled execution and database timeouts) has been to run it through Internet Explorer on the site's server and have the site's domain name mapped to 127.0.0.1 in the HOSTS-file. It can run for hours and hours while logging progress to a table or text-file before sending the response.
My colleague Jarle figured out the last bits and blogged the whole process here So if you want to run the EPiServer API outside of IIS, that's the place to start. Works like a charm!

Resources