5 Stimmen

Wie kann ich mit SSRS und BIDS Custom Security Extension auf Benutzerrollen/Berechtigungen zugreifen?

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!

2voto

Alex H Punkte 733

Verwenden Sie das IAuthenticationExtension-Interface? Der folgende Link enthält ein gutes Beispiel für den Zugriffsschutz, wenn Sie diesen benötigen. http://blogs.msdn.com/b/jameswu/archive/2008/07/15/anonymous-access-in-sql-rs-2008.aspx

Ich nehme an, dass der nt-Benutzername hier verfolgt werden kann und dann Abfragen gegen aktive Verzeichnisgruppen ausgeführt werden können. Das Hauptproblem, das ich hier sehe, wäre das Aktivieren der richtigen Vertrauensrichtlinie in der SSRS-Richtlinienkonfiguration.

2voto

Dan Punkte 1489

Nun, ich habe aufgegeben, eine elegante Lösung zu finden. Stattdessen bin ich den Weg des geringsten Widerstands gegangen und habe dem gefolgt, was ich verstehe, dass es die SSRS-Richtlinie ist, einen 'Master'-Account zu haben. Dieser soll für die Berichtsbereitstellung und Abonnements verwendet werden. Dieser Account muss fest codiert oder aus einer Einstellungsdatei ausgelesen werden. Ich bin mir nicht sicher, ob es einen anderen Weg gibt. Prost.

Aktualisierung: Ich bin diesen Weg gegangen und es funktioniert gut. Wenn ein Benutzer über die Web-Frontend angemeldet ist, können dort Berichte bereitgestellt werden. Wenn sie jedoch aus der Entwicklungsumgebung (BIDS) bereitstellen möchten, müssen sie sich mit dem Master-Account anmelden, wenn der Anmelde-Dialog angezeigt wird. Ich habe das Bereitstellen auf nur diese spezifische Verwendung beschränkt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X