驗證是識別用戶端身分的程式,通常用來判斷用戶端是否有資格存取資源。 HTTP 通訊協定支持驗證,作為交涉存取安全資源的方法。
來自用戶端的初始要求通常是匿名要求,不包含任何驗證資訊。 HTTP 伺服器應用程式可以在指出需要驗證時拒絕匿名要求。 伺服器應用程式會傳送 WWW-Authentication 標頭,以指出支持的驗證配置。 本文說明 HTTP 的數個驗證配置,並討論其在 Windows Communication Foundation (WCF) 中的支援。
HTTP 驗證配置
伺服器可以指定多個驗證配置,供客戶端選擇。 下表說明 Windows 應用程式中常見的一些驗證設定:
認證方案 | 說明 |
---|---|
匿名 | 匿名要求不包含任何驗證資訊。 匿名相當於將資源的存取權授與每個人。 |
基本 | 基本身份驗證會傳送Base64編碼的字串,其中包含用戶端的使用者名稱和密碼。 Base64 不是加密形式,應該視為與以純文本傳送使用者名稱和密碼相同。 如果需要保護資源,請強烈考慮使用基本身份驗證以外的驗證配置。 |
摘要 | 摘要式驗證是一種挑戰回應配置,旨在取代基本身份驗證。 伺服器會將稱為 nonce 的隨機數據字串傳送給客戶端作為挑戰。 用戶端會以哈希回應,其中包含使用者名稱、密碼和 nonce 等其他資訊。 此交換引入的複雜性和數據哈希使得使用這種驗證方案更難竊取和重複使用用戶的認證。 摘要式驗證需要使用 Windows 網域帳戶。 摘要 領域 是 Windows 網域名稱。 因此,您無法在不支援 Windows 網域的作業系統上,例如 Windows XP Home Edition,使用摘要式驗證的伺服器。 相反地,當用戶端在不支援 Windows 網域的作系統上執行時,必須在驗證期間明確指定網域帳戶。 |
NTLM | NT LAN Manager(NTLM)驗證是一種挑戰-回應機制,比摘要式驗證更安全。 NTLM 會使用 Windows 認證來轉換挑戰數據,而不是未編碼的使用者名稱和密碼。 NTLM 驗證需要客戶端與伺服器之間的多個交換。 伺服器和任何介入 Proxy 都必須支持持續性連線,才能順利完成驗證。 |
談判 | 交涉驗證會自動在 Kerberos 通訊協定與 NTLM 驗證之間選取,視可用性而定。 如果有,則會使用 Kerberos 通訊協定;否則,會嘗試NTLM。 Kerberos 驗證可大幅改善對 NTLM 的性能。 Kerberos 驗證的速度比 NTLM 快,而且允許對遠端電腦使用相互驗證和委派認證。 |
Windows Live ID (微軟即時帳戶) | 基礎 Windows HTTP 服務包含使用同盟通訊協議的驗證。 不過,WCF 中的標準 HTTP 傳輸不支援使用同盟驗證配置,例如Microsoft Windows Live ID。 目前可透過訊息安全性來支援此功能。 如需詳細資訊,請參閱 同盟和發行的令牌。 |
選擇驗證配置
選取 HTTP 伺服器的潛在驗證方案時,要考慮的事項包括下列幾點:
請考慮資源是否需要受到保護。 使用 HTTP 驗證需要傳輸更多數據,而且可以限制與用戶端的互作性。 允許匿名存取不需要保護的資源。
如果需要保護資源,請考慮哪些驗證配置提供所需的安全性層級。 這裏討論的最弱標準驗證配置是基本身份驗證。 基本身份驗證不會保護用戶的認證。 最強的標準驗證機制是交涉驗證,即 Kerberos 通訊協定。
例如,伺服器不應在 WWW-Authentication 標頭中顯示任何其未準備好接受或未能適當保護受保護資源的方案。 用戶端可以自由選擇伺服器呈現的任何驗證配置。 某些客戶端預設為弱式驗證配置,或伺服器清單中的第一個驗證配置。