1.身份驗證概念
任何成功的應用程序安全策略的基礎都是穩固的身份驗證和授權手段,以及提供機密數據的保密性和完整性的安全通訊。
身份驗證(authentication)是一個標識應用程序客戶端的過程,這里的客戶端可能包括終端用戶、服務、進程或計算機,通過了身份驗證的客戶端被稱為主體(principal)。身份驗證可以跨越應用程序的多個層發生。終端用戶起初由Web應用程序進行身份驗證,通常根據用戶名和密碼進行;隨后終端用戶的請求由中間層應用程序服務器和數據庫服務器進行處理,這過程中也將進行身份驗證以便驗證并處理這些請求。
2. 身份驗證模式
ASP.NET身份驗證模式
Enterprise Services身份驗證
SQL Server身份驗證
2.1 ASP.NET身份驗證模式
ASP.NET身份驗證模式包括Windows、Forms(窗體)、Passport(護照)和None(無)。
2.1.1 Windows身份驗證
使用這種身份驗證模式時,ASP.NET依賴于IIS對用戶進行驗證,并創建一個Windows訪問令牌來表示已通過驗證的標識。IIS提供以下幾種身份驗證機制:
基本身份驗證
簡要身份驗證
集成Windows身份驗證
證書身份驗證
匿名身份驗證
2.1.2 護照身份驗證
使用這種身份驗證模式時,ASP.NET使用Microsoft Passport的集中式身份驗證服務,ASP.NET為Microsoft Passport軟件開發包(SDK)所提供的功能提供了一個方便的包裝(Wrapper)。此SDK必須安裝在WEB服務器上。
2.1.3 窗體身份驗證
這種驗證方式使用客戶端重定向功能,將未通過身份驗證的用戶轉發到特定的登錄窗體,要求用戶輸入其憑據信息(通常是用戶名和密碼)。這些憑據信息被驗證后,系統生成一個身份驗證票證(ticket)并將其返回客戶端。身份驗證票證可在用戶的會話期間維護用戶的身份標識信息,以及用戶所屬的角色列表(可選)。
2.1.4 None
使用這種身份驗證模式,表示你不希望對用戶進行驗證,或是采用自定義的身份驗證協議。
2.2 Enterprise Services身份驗證
Enterprise Services身份驗證通過使用底層的遠程過程調用(RPC,Remote Procedure Call)傳輸結構來進行,而這種結構又使用了操作系統安全服務提供程序接口(SSPI,Security Service Provider Interface)。可以利用Kerberose或NTLM身份驗證機制對Enterprise Services應用程序的客戶端進行驗證。
2.3 SQL Server身份驗證
SQL Server可以通過Windows身份驗證機制(Kerberose或NTLM),也可以通過其內置的身份驗證方案-SQL身份驗證機制進行驗證。通常有兩種可用的驗證方案。
2.3.1 SQL Server and Windows
客戶端可用通過SQL Server身份驗證或Windows身份驗證機制來連接SQL Server的某個實例。這種方式有時也被稱為混合模式的身份驗證。
2.3.2 Windows Only
客戶端必須通過使用Windows身份驗證機制來連接到SQL Server的一個實例。
3. 選擇身份驗證機制
設計分布式應用程序的身份驗證是一項具有挑戰性的任務。在應用程序開發的早期階段,進行適當的身份驗證設計有助于降低許多安全風險。
3.1 各種身份驗證機制的比較
3.2選擇身份驗證機制需要考慮的因素
標識只有當應用程序的用戶具有的Windows帳戶可以通過一個受信任的權威機構(它可以被應用程序Web服務器訪問)來進行驗證時,使用Windows身份驗證機制才是合適的。
憑據管理Windows身份驗證的一個關鍵優勢在于它可以使用操作系統進行憑據管理。當使用非Windows身份驗證方式,例如窗體身份驗證時,必須仔細考慮在何處以及如何保存用戶憑據。其中最常用的方式是使用SQLServer數據庫或是使用位于ActiveDirectory中的User對象。
標識流動是否需要實現一個模擬/委托模型,并將原始調用者的安全上下文在操作系統級進行跨層流動-例如,以便支持審核或針對每個用戶的精細授權。
瀏覽器類型應用程序的所有用戶是否都擁有IE瀏覽器?或是你是否需要支持一個具有混合型瀏覽器的用戶群?我們選擇身份驗證時需要根據各種方式的特點,綜合考慮以上因素。
3.3Intranet系統的選擇決策流程
3.4SQLServer用戶驗證
對SQLServer的客戶端進行驗證,一般說來Windows身份驗證要比SQLServer身份驗證更安全,原因主要有以下幾點:
前者負責管理用戶的憑據信息,而且用戶的憑據不會在網絡上傳輸。可以避免在連接字符串中嵌入用戶名和密碼。可通過密碼過期時限、最小密碼長度、以及多次無效登錄后請求的帳戶鎖定等措施改進登錄安全性。這樣可以見少詞典攻擊的威脅。但是某些特定的應用程序方案中不允許使用Windows身份驗證,例如:數據庫客戶端和數據庫服務器由一個防火墻分隔開,從而導致無法使用Windows身份驗證。應用程序需要使用多個標識連接到一個或多個數據庫。連接到的數據庫不是SQLServer。在ASP.NET中沒有一種安全的方式以特定的Windows用戶的身份運行代碼。在以上這些方案中,將必須使用SQL身份驗證,或是數據庫的本機身份驗證機制。
共2頁: 1 [2] 下一頁 | ||||
|