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


