peter_luke_row's avatar
peter_luke_row
New Member
8 years ago
Status:
Needs Votes

Custom Authentication, external database for security, SSRS 2016/2017 regression

I'm reposting my original post from here: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/f474ba23-7e8d-4c6b-ad41-b2327956226b/sql-2016-reporting-services-custom-security-how-to-access-name-of-item-being-accessed?forum=sqlreportingservices A moderator/curator with the username Boreki indicated that this might be the place to get work prioritised. Couldn't find a reporting services specific forum, nor a SQL Server 2016 specific one so asking this here. In SQL Server 2016 reporting services Microsoft threw us under a bus and broke every ones custom security DLLs, not so bad we just stayed on 2008R2 and 2014, but now customers are asking to upgrade to 2016 and beyond so have to act. The "replacement" does not seem to offer the same facility and I can't tell from the MS documentation what I should use instead. Previously we would use HttpContext.Current.Request.Headers (.Current is now null in 2016 due to the break introduced) to access the SOAPAction to figure out what item is being requested in the IAuthorization.CheckAccess () methods. We used this to then access our applications DB to do further checks on the user because in some cases we need to take different actions based on the type of user in our web application. I was accessing the nodes in the XML obtained from the header indicated above with these selectors: /soap:Envelope/soap:Body/*/rs:ItemPath /soap:Envelope/soap:Body/*/rs:Parent /soap:Envelope/soap:Body/def:LoadReport2/def:Report Effectively what we are doing is bypassing SSRS for all security, none of the items stored in SSRS (reports, data models, data connections) has any permissions set. We control it entirely from our app by looking up an access control list in our apps DB. I cannot for the life of me see how we can access this item information because in CheckAccess () interface method you are passed the security descriptor of the item which does not have information like that path that we are using. Can anyone advise where I can obtain this information in the new SSRS 2016 way of doing custom security?

Recent ideas