2012-08-17 107 views
4

我們的Web應用程序使用NTLM身份驗證,它正在工作。是否可以使用相同的登錄憑據自動登錄到報表管理器,實際上我們希望能夠從我們的Web應用程序導航到報表管理器,而無需再次登錄。 任何解決方案。謝謝很多。 有人可以幫我添加正確的標籤嗎?我已經加了一些,但是害怕不合適。謝謝SSRS管理站點的SSO

+1

你嘗試過什麼迄今爲止樣?我認爲你所描述的可以通過設置表單身份驗證來實現。有一個一步一步的教程[這裏](http://msftrsprodsamples.codeplex.com/wikipage?title=SS2008R2!Security%20Extension%20Sample),雖然這個Codeplex條目不是我寫的。 – 2013-04-02 21:02:32

+1

你也可以看看自定義安全。自定義安全將允許您覆蓋ssrs的身份驗證和授權功能。覆蓋可以發揮你當前的數據模型。您需要定義一個實現了幾個接口的類,然後讓它們通過rssserportserver.config文件中的條目來知道。 – 2013-04-03 03:27:56

+0

謝謝。每個人都需要時間閱讀它。 – 2013-04-03 06:36:26

回答

0

Reporting Services主要是一個Intranet應用程序,因此默認安全性是Windows身份驗證。當然,Reporting Services是可擴展的,並且可以通過互聯網訪問,但爲此用戶必須打入Windows憑據(NTLM或Basic),或者必須重寫RS的身份驗證機制。如果您的應用程序在Forms Auth上,那麼您可以在RS上進行類似的身份驗證,同時將身份驗證Cookie從應用程序傳遞到RS的身份驗證擴展。來自Alex共享的FBA樣本可能是您的出發點。

您可能還想知道,您可以將RS的功能封裝在應用程序中,用戶不會直接訪問RS,但您的應用程序將通過RS'SOAP APIs撥打RS和其報告。

+0

在那裏添加一個實現用戶自定義安全性的HttpModule不是更好嗎?因爲它足以理解每個Asp.Net開發者。它適用於RS的Web服務請求。我已經閱讀了你的推薦答案,好吧,我不認爲這很容易理解。實施和調試。 – 2013-08-16 01:19:14

1

如果您想要對報告管理器執行單點登錄,實現此目的的方法是通過實施Microsoft提供的自定義安全擴展。這是標準解決方案。您可以在此處獲得實施細節http://www.codeproject.com/Articles/675943/SSRS-2012-Forms-Authentication

另外,正如您所提到的,如果您不想包括複雜性並使事情簡單化,只需通過獲取驗證頁面的DOM和處理單擊來實現登錄。但是,如果您確信網頁中的標籤命名,該方案纔有效。

檢查以下

public MainWindow() 
{ 
InitializeComponent() 
WinFormWebBrowser.Navigate(Url); 
WinFormWebBrowser.DocumentCompleted += WinFormWebBrowser_DocumentCompleted; 
} 

void WinFormWebBrowser_DocumentCompleted(object sender, System.Windows.Forms.WebBrowserDocumentCompletedEventArgs e) 
     { 
      try 
      { 
        HtmlElement ele = WinFormWebBrowser.Document.GetElementById("email"); 
        if (ele != null) 
         ele.InnerText = "username"; 

        ele = WinFormWebBrowser.Document.GetElementById("pass"); 
        if (ele != null) 
         ele.InnerText = passWord; 

        ele = WinFormWebBrowser.Document.GetElementById("loginbutton"); 
        if (ele != null) 
         ele.InvokeMember("click"); 
       WinFormWebBrowser.DocumentCompleted -=WinFormWebBrowser_DocumentCompleted; 

      } 
      catch 
      { 

      } 

     }