本文摘自MSDN:
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vsent7/html/vxconiisauthentication.asp
身分識別驗證與憑據
許多分布式應用程式的重要部分是標識某個人(稱為主體或用戶端)並控制用戶端對資源的訪問能力。身分識別驗證是驗證用戶端身份的行為。一般情況下,用戶端必須提供某些證據,一般稱為憑據,來證明其身份。通常,憑據包括使用者名稱和密碼對。Internet 資訊服務 (IIS) 和 ASP.NET 都提供幾種身分識別驗證方案。
匿名
匿名驗證可使使用者訪問 Web 網站的公用地區,不提示使用者輸入使用者名稱和密碼。IIS 使用特定使用者帳戶 (IUSR_machinename) 將儲存好的憑據提供給 Windows。預設情況下,IIS 控制此帳戶的密碼。IIS 是否控制該密碼會影響匿名使用者的許可權。
優點
- 提供最佳效能,這是因為匿名驗證不需要任何系統開銷。
- 不需要管理個人使用者帳戶。
- 如果 IIS 不控制密碼,可以訪問網路資源。
缺點
不能逐個對用戶端進行身分識別驗證。
- 如果 IIS 不控制密碼,帳戶必須有本地登入能力。
- ASP.NET Web.Config
- 使用 Web.config 檔案配置 ASP.NET,指定無身分識別驗證或 Windows 身分識別驗證。
整合 Windows 身分識別驗證
整合 Windows 身分識別驗證可以使用 NTLM 或 Kerberos V5 身分識別驗證,當 Internet Explorer 試圖訪問受保護的資源時,IIS 發送兩個 WWW 身分識別驗證頭,Negotiate 和 NTLM。如果 Internet Explorer 不能識別 Negotiate,它將使用 NTLM。 因此,所使用的機制由 Internet Explorer 與 IIS 之間的協商來決定。
整合 Windows 身分識別驗證是 Intranet 環境中最好的身分識別驗證方案,在這種使用者擁有 Windows 域帳戶,尤其是在使用 Kerberos 的時候。整合 Windows 身分識別驗證與簡要身分識別驗證一樣,不在網路上傳遞使用者密碼,而是交換雜湊值。
優點
- 可與 Kerberos 一起使用,啟用對安全憑據的委託。
- 使用 Windows 的 Intranet 環境的最佳方案。
缺點
- 不能通過代理穿過防火牆驗證身份,除非通過 PPTP 串連使用它。
- 如果選擇了 NTLM,則它不支援對其他伺服器的委託。
- 僅 Internet Explorer 2.0 及更高版本支援它。
- 僅 IIS 5.0 和更高版本支援 Kerberos。
基本
IIS 實現基本驗證,基本驗證是 HTTP 1.0 規範的一部分,它使用 Windows 使用者帳戶。當使用基本驗證時,瀏覽器提示使用者輸入使用者名稱和密碼。然後此資訊通過 HTTP 傳遞,在 HTTP 上使用 Base 64 編碼方式將其編碼。基本驗證還是有固有的不安全性。由於解碼 Base 64 編碼資料很容易,因此基本驗證實質上就是將密碼作為純文字發送。預設情況下,基本驗證要求 Windows 使用者帳戶具有 Web 服務器本地登入許可權。
優點
- 由於它是 HTTP 1.0 規範的一部分,基本驗證是得到最廣泛支援的使用者身分識別驗證方案。
- 可以通過Proxy 伺服器驗證身份。
- 可以跟蹤個人使用者。
- 如果使用者帳戶有 Web 服務器的本地登入許可權,則可以訪問網路資源。
- 可與 Kerberos 一起使用,啟用對安全憑據的委託。
缺點
- 若不使用 SSL/TLS,本身具有不安全性。但 SSL/TLS 會影響效能。
- 要求為每個使用者建立個人 Windows 帳戶。
摘要式
簡要身分識別驗證克服了基本驗證的主要弱點:以純文字形式發送密碼。簡要身分識別驗證是一種質詢/響應機制,它在網上發送簡要(又稱為雜湊)而非密碼。當用戶端試圖訪問要求簡要身分識別驗證的資源時,IIS 向該用戶端發送一個質詢,要求它建立一個簡要並將其發送到伺服器。用戶端串連伺服器和用戶端都知道的密碼和資料。然後用戶端將一個簡要演算法(由伺服器指定)應用到該組合資料。用戶端將獲得的簡要發送到伺服器作為對質詢的響應。伺服器利用從 Active Directory 獲得的用戶端密碼副本,使用與用戶端相同的過程建立簡要。在 Active Directory 中使用可逆加密方法儲存密碼。如果伺服器建立的簡要與用戶端建立的簡要相匹配,則 IIS 驗證該用戶端的身份。
優點
- 在網路上發送簡要,而非密碼。
- 與Proxy 伺服器和防火牆一起使用。
- 不因保護密碼而要求使用 SSL/TLS。
缺點
- 不能委託安全憑據。
- 僅 Internet Explorer 5.0 及更高版本支援它。
- 受制於重放攻擊,除非使用 SSL/TLS。
- 要求使用可逆加密方法在明文中儲存密碼。
- 要求為 Active Directory 中的每個使用者建立域帳戶。
以上幾種身分識別驗證方式對應的ASP.NET Web.Config為
1 <system.web>
2 <authentication mode="Windows" />
3 </system.web>4