2012-02-23 29 views
5

我已經爲SSRS 2008r2編寫並部署了一個自定義安全擴展,除了試圖從BIDS 2008/Visual Studio內部署報告外,它工作得非常好。如何使用SSRS和BIDS自定義安全擴展訪問用戶角色/權限?

安全性擴展的體系結構通過多個權威機構處理登錄,我通過在LogonUser()中創建用戶會話來管理此問題,將其保存在數據庫中,然後使用RS Web服務的客戶機代理類加載會話一個通過cookie傳遞給服務的UID,然後重寫身份驗證票據以包含當前用戶的會話UID和用戶角色。這些值可以在自定義授權擴展中用於管理SSRS操作和對象的用戶權限。

我遇到的問題是,它在部署來自BIDS的報告時不起作用。它直接訪問服務,因此不需要服務代理類。我曾嘗試在HTTP上下文中處理身份驗證後事件,但會話cookie不會由RS服務持久保存,因此我無法訪問會話值。

那麼我錯過了什麼?是否有另一種方法來控制用戶角色&權限,而不需要在任何地方硬編碼用戶名?就像我說的那樣,登錄可以使用多個權限來完成,因此僅通過用戶名來管理權限是不可能的(並且它的思想讓我感到畏縮)。

我想到的一個可能的解決方案是爲BIDS編寫一個擴展或插件,它本質上充當了Web服務的代理,這將允許我更多地控制登錄過程,但我不知道這是否可行(谷歌沒有幫助...)

任何幫助將受到感謝!

+0

你有沒有得到任何解決方案的完整源代碼? – 2015-08-18 20:49:14

回答

2

好吧,我放棄了尋找一個完美的解決方案,所以我已經下降阻力最小的道路,跟着我收集是具有「主」賬戶,我將指定的SSRS方針是要用於報告部署和訂閱。此帳戶需要硬編碼或從設置文件中拉出我不確定是否有任何其他方式。乾杯。

更新:我走了這條路,它工作正常。如果用戶通過Web前端登錄,他們可以在那裏部署報告,但是如果他們想從開發環境(BIDS)進行部署,則需要在登錄對話框顯示時使用主帳戶登錄。我已將部署帳戶限制爲僅限於此特定用途。

+0

聽起來像一個可行的選擇。另一個方向是使用其他工具進行報告部署。我們僅將BIDS部署用於初始報告服務器部署,並且只有一半時間。 RSS(http:// stackoverflow。com/questions/3056799/automating-ssrs-report-deployment)可能有相同的身份驗證問題,但通過IE進行部署並不是世界上最糟糕的事情...... – 2012-02-27 20:41:48

+0

@JamieF感謝您的評論,是的,我曾考慮過通過Web前端進行部署,但這隻會給報告開發者帶來麻煩。當訂閱運行時(即用戶詳細信息無法正確加載),也會出現同樣的問題,因此主帳戶將成爲兩隻鳥/一塊石頭的方法。但我並不特別高興。 – Dan 2012-02-27 21:23:39

2

您使用IAuthenticationExtension接口嗎?如果您需要,以下鏈接提供了一個訪問控制的良好示例。 http://blogs.msdn.com/b/jameswu/archive/2008/07/15/anonymous-access-in-sql-rs-2008.aspx

我會想象在NT的用戶名可以在這裏追蹤,然後查找針對Active Directory組等,主要的頭痛我可以在這裏看到將被允許在SSRS策略配置正確的信任策略進行。

+0

謝謝您的回答,但正如我上面我使用與登錄憑據,以便跟蹤權限,只需用戶名不止一個權威窗體身份驗證提到是不可能的(例如,可能會有不同的用戶,在每個權限相同的用戶名)。我絕對不使用匿名訪問。 – Dan 2012-02-26 20:21:13