2013-07-04 61 views
0

我有一個使用表單身份驗證的MVC4 ASP.NET應用程序。我有一個iframe的視圖,我想從使用域身份驗證的本地Intranet站點顯示內容。來自MVC網站的用戶無法訪問本地服務器,因此我需要模擬域用戶來顯示本地內容。 我試着先創建一個webRequest,但沒有保存憑證。 我沒有管理員權限,因此無法更改iis或其他設置。 有什麼建議嗎?如何從mvc應用程序訪問內部網站的內容?

回答

0

通常,在通過互聯網訪問時冒充域用戶的安全性非常差。如果內部網站沒有公開,那麼很可能出於某種原因這樣做了,而且您可能會通過免費提供的網站將公司資源暴露給攻擊者。

更安全的方法是複製您希望公開的Intranet站點的邏輯,並將其功能精心地合併到外部MVC應用的頁面中。這是更多的工作,但它可能不會導致你成爲黑客或腳本小子能夠竊取有價值數據的原因。這就是說,用身份驗證來模擬Web請求的方法是製作一系列HttpRequest對象,並存儲Cookie信息。這就是所有身份驗證的發生過程,只要您將Cookie從請求傳遞到請求,您就應該有自由的統治權。但是,除非你確定你的公司已經意識到潛在的災難,並且希望內聯網應用程序的維護者意識到他們正在以這種方式暴露,否則不要這樣做。

public function badIdea() { 
    WebRequest request = WebRequest.Create (
    "intranet-login-url"); 
    request.Credentials = CredentialCache.DefaultCredentials; 
    using(WebResponse response = request.GetResponse()) { 
    CookieCollection authCookies = response.Cookies; 
    } 

    // now pass authCookies' contents to each future WebRequest's cookie collection 
    // to allow all manner of unscrupulous individuals to access your valuable 
    // company sekrits! 
} 
+0

嗨Welegan, 我可能沒有解釋我的意圖的權利。這裏的要點是有一個單一的登錄。 Intranet站點是一個SQL報告服務器。我想避免複製這兩個網站上的用戶或創建AD用戶以查看報告。我也嘗試使用reportviewer控件來處理遠程模式的報告,但我不能讓它在服務器上工作(在localhost上運行良好)。 無論如何,理想或解決方法是使用iframe上的服務器reportviwer。不是如何做到這一點與webrequest或如何通過cookie傳遞給iframe:S – Fraposo

+0

爲了使用Cookies必須是HttpWebResponse而不是WebResponse ... – Fraposo

相關問題