2009-10-20 118 views
2

我在我們的Intranet上有一個管理網站,目前使用集成Windows身份驗證通過IIS。我們希望將此應用程序移至公共網站並使用SSL加以保護,以便我們的用戶可以從任何地方訪問它。集成Windows身份驗證和SSL

我一直在計劃使用HttpModule從http重定向到https,但它看起來不像集成身份驗證(登錄彈出窗口出現在重定向之前)。

我堅持使用IIS中的「require SSL」複選框嗎?這似乎並不是所有用戶友好的,因爲如果用戶忘記使用https URL,用戶會得到一個很好的胖錯誤頁面,而不是輕輕的重定向。

你會在這種情況下做什麼?

回答

3

我們在我們的Intranet站點上遇到類似問題,最終從集成Windows身份驗證切換到直接在網站上請求其網絡用戶名/密碼。這樣我們可以將它們重定向到HTTPS或其他類似的東西,而不用擔心驗證彈出窗口的時間。

我們有一些類似於此的代碼(假設您使用ASP.NET)對用戶進行身份驗證,然後我們將身份驗證狀態存儲在cookie中。

public static bool AuthenticateUser(string username, string password) 
{ 
    System.DirectoryServices.DirectoryEntry _entry = new System.DirectoryServices.DirectoryEntry(ldap_path, username, password, System.DirectoryServices.AuthenticationTypes.Delegation); 

    bool _authenticated = false; 
    try 
    { 
     Object _o = _entry.NativeObject; 
     _authenticated = true; 
    } 
    catch 
    { 
     _authenticated = false; 
    } 
    finally 
    { 
     // Avoids the "multiple connections to server not allowed" error. 
     _entry.Close(); 
     _entry.Dispose(); 
    } 

    return _authenticated; 
} 

它結束了通過處理所有身份驗證的應用程序,而不是依賴於IIS我們節省噸頭痛和無奈。

+0

感謝您的回覆。無論如何,我開始傾向於關閉集成身份驗證,因爲它知道它可能無法在建築物外工作。 – 2009-10-21 21:20:27

+0

是否有任何特定的原因,您決定不使用會員提供商的功能,並推出自己的? – 2009-10-22 17:33:49

+0

我們已經有了一個長期存在的數據結構,它不會與標準的.NET成員資格提供程序功能一起工作。 我們可以實現自己的繼承自MembershipProvider的類,但我們不需要它所需的所有屬性和方法,所以我們決定改爲創建自己的精簡版。 – JoshMock 2009-10-23 17:13:43

6

我每次都解決了這個作爲一個IIS問題,而不是一個代碼問題:

  • 在IIS
  • 創建一個新的網站將其綁定到相同的IP地址(和/或主機頭),你的SSL證書和端口443
  • 配置這指向同一個應用程序根目錄作爲當前端口80的網站
  • 測試,以確保直接連接到https://site給出了期望的響應
  • 重新配置原始站點(仍然綁定到端口80)以使用HTTP重定向功能
  • 配置端口80站點以重定向到端口443站點;可選,刪除應用程序和虛擬目錄映射(萬一有人不小心禁用重定向)

從此,這只是類型的網站地址爲他們的瀏覽器將會從IIS快如閃電的重定向消息的任何用戶將它們發送到網站的受SSL保護的版本。