2009-02-11 40 views
4

我已經創建了ASP.NET 2.0 Web應用程序,並且希望將SSRS 2005用於報告目的。SSRS 2005 - 配置用戶身份驗證/授權

Web應用程序使用表單身份驗證和自定義角色進行授權。我創建了報告並將其部署到我們的SQL Server 2005框中。

我有兩個選擇,整合報告到我的應用程序:從我的應用程序內

  1. 鏈接到SSRS。該鏈接將具有指定的參數和選項。我確保鏈接僅顯示授權用戶,並鏈接到具有適當參數的正確報告。

  2. 使用ReportViewer控件並使用它顯示報表。所有處理將由SSRS完成

但是,我不確定在Reporting Services框中IIS上配置安全性的最佳方法。目前它被設置爲Windows集成身份驗證。報告服務也有我的用戶名和瀏覽器角色。

並非我的應用程序的所有用戶都有AD登錄。此外,該應用程序在互聯網上,我不想打開超過必要的SSRS。同時,我希望它對我們的用戶來說是無縫的,因爲我不希望SSRS提示輸入用戶名和密碼。

完成此操作的最佳方法是什麼?我應該創建一個虛擬AD用戶,然後使用它來在ASP.NET應用程序和SSRS之間進行通信?如果不是這樣,那麼實現我需要的一切的最簡單方法是什麼?

回答

2

我們使用Web服務界面和報告查看器控件使用同一個AD帳戶爲所有用戶與SSRS進行通信。至於權限,我們有自定義訪問列表 ,在向用戶提供報告之前,asp.net頁面會檢查它。這是附加到用戶名。我們將SSRS盒子保留在互聯網上,用戶只能通過訪問列表來控制訪問列表控制。

對於報告視圖控制,我們必須創建一個自定義憑據類,以傳遞從繼承的AD用戶名和密碼IReportServerCredentials。 AD用戶名和密碼保存在xml文件中。

希望這會有所幫助。

+0

Fahad,這個AD賬戶是一個不存在的用戶,只用於SSRS? – cwius 2009-02-12 13:56:02

+0

是的。只需提供足夠的權限即可訪問SSRS。此用戶還需要具有DataReader訪問數據庫的權限。 – Fahad 2009-02-12 16:53:07

1

1法赫德

除了使用IReportServerCredentials接口,可以使用ReportServerConnection的一個實例,並將其分配到報告觀看者控制。我們將用戶名,密碼和域(如果需要)存儲在web.config文件中。

ReportServerConnection credentials = new ReportServerConnection('username', 'password'); 
ReportViewer1.ServerReport.ReportServerCredentials = credentials; 
0

我們最近將SSRS(SQL Server 2008 R2)的SSO身份驗證方法與使用表單身份驗證的自定義Web應用程序集成在一起。我發現這兩篇文章非常有用,並概述了爲完成我們的SSO解決方案所需做的一切。

Reporting Services Single Sign On (SSO) Authentication - Part 1

Reporting Services Single Sign On (SSO) Authentication - Part 2

以下是基本的步驟,但我建議你仔細閱讀這些文章:

  1. 創建驗證管理器,它會處理特定的身份驗證系統
  2. 爲SSRS創建您的登錄頁面(我們的頁面,例如,只需調用LogonUser,然後重定向到報表管理器) - 這是ne cessary只有當你想使用SSRS的報表管理
  3. 到您的項目添加ReportingService2010 & ReportExecution2005服務後,您會希望創建它們圍繞代理包裝和覆蓋順序GetWebRequest & GetWebResponse方法傳遞的SSRS身份驗證票證SSRS和您的應用程序。
  4. 創建一個實現IAuthenticationExtension & IAuthorizationExtension您的自定義驗證模塊(見第2部分)
  5. 配置SSRS能夠使用自定義窗體身份驗證模塊
  6. 如果你想使用報表管理器,然後你要確保配置SSRS報告管理器來處理您的應用程序授權憑證:Configure Report Manager to Pass Custom Authentication Cookies

完成這些步驟後,您可以使用報告管理器或直接在應用程序中實施Web服務。