Ich habe eine benutzerdefinierte Sicherheitserweiterung für SSRS 2008r2 geschrieben und bereitgestellt, die wunderbar funktioniert, abgesehen davon, wenn versucht wird, Berichte von innerhalb von BIDS 2008/Visual Studio bereitzustellen.
Die Architektur für die Sicherheitserweiterung behandelt Anmeldungen über mehrere Behörden, und ich verwalte dies, indem ich eine Benutzersitzung in LogonUser() erstelle, diese in einer Datenbank persistiere und dann die Sitzung in der Client-Proxyklasse für den RS-Webservice mithilfe einer UID, die vom Dienst per Cookie übergeben wird, lade. Anschließend wird das Authentifizierungsticket so umgeschrieben, dass es die Sitzungs-UID sowie Benutzerrollen für den aktuellen Benutzer enthält. Diese Werte können dann in der benutzerdefinierten Autorisierungserweiterung verwendet werden, um die Benutzerberechtigungen für SSRS-Aktionen und -Objekte zu verwalten.
Das Problem, auf das ich gestoßen bin, ist, dass es nicht funktioniert, wenn Berichte aus BIDS bereitgestellt werden. Es greift direkt auf den Dienst zu, und daher ist die Service-Proxyklasse nicht erforderlich. Ich habe versucht, das Post-Authentifizierungsereignis im HTTP-Kontext zu behandeln, aber leider wird das Sitzungscookie vom RS-Dienst nicht persistiert, sodass ich nicht auf die Sitzungswerte zugreifen kann.
Also, was fehlt mir hier? Gibt es eine andere Methode zur Steuerung von Benutzerrollen und -berechtigungen, die nirgendwo Benutzernamen fest codiert erfordert? Wie gesagt, Anmeldungen können über mehrere Behörden erfolgen, sodass die Verwaltung von Berechtigungen nur über einen Benutzernamen nicht möglich ist (und allein der Gedanke daran lässt mich erschaudern).
Eine mögliche Lösung, an die ich gedacht habe, ist das Schreiben einer Erweiterung oder eines Plugins für BIDS, das im Wesentlichen als Proxy für den Webservice fungiert, was mir mehr Kontrolle über den Anmeldeprozess ermöglichen würde, aber ich habe keine Ahnung, ob dies möglich ist (Google hilft nicht...)
Jede Hilfe wird dankbar angenommen!