System.Net類別支援各種客戶端驗證機制,包括標準因特網驗證方法基本、摘要、交涉、NTLM 和 Kerberos 驗證,以及您可以建立的自定義方法。
驗證憑證會儲存在 NetworkCredential 和 CredentialCache 類別中,這些類別實作 ICredentials 介面。 當查詢這些類別中的一個憑證時,會回傳該 NetworkCredential 類別的實例。 驗證程式是由 AuthenticationManager 類別管理,而實際的驗證程式是由實作 介面的 IAuthenticationModule 驗證模塊類別所執行。 您必須先在 AuthenticationManager 註冊一個自訂認證模組,才能使用該模組,而基本、摘要、協商、NTLM 和 Kerberos 認證方法的模組則已經預設註冊。
NetworkCredential 儲存一組與單一網際網路資源相關的憑證,該資源由 URI 識別,並在呼叫 GetCredential 該方法時回傳這些憑證。 此 NetworkCredential 類別通常用於存取有限數量網際網路資源的應用程式,或是所有情況下使用相同憑證集的應用程式。
該 CredentialCache 類別儲存各種網路資源的憑證集合。 當呼叫該 GetCredential 方法時,會 CredentialCache 回傳由網路資源的 URI 及所請求的認證方案決定的正確憑證集合。 使用多種網際網路資源並採用不同認證方案的應用程式,會受益於使用此 CredentialCache 類別,因為它儲存所有憑證並依需求提供。
當網際網路資源請求認證時,WebRequest.GetResponse 方法會將 WebRequest 和憑證請求一併傳送給 AuthenticationManager。 接著會根據下列程式進行驗證要求:
AuthenticationManager在每一個註冊認證模組中依註冊順序呼叫 Authenticate 方法。 該AuthenticationManager模組使用第一個未返回null的模組來執行認證程序。 程序的詳細數據會根據所涉及的驗證模組類型而有所不同。當認證過程完成後,認證模組會將 Authorization 歸還到包含存取網際網路資源所需資訊的
WebRequest。
某些驗證配置可以驗證使用者,而不需先要求資源。 應用程式可以藉由使用資源預先驗證用戶來節省時間,因此可避免至少一次往返伺服器。 或者,它可以在程式啟動期間執行驗證,以便稍後對使用者更有回應。 可使用預先驗證的驗證配置會將 屬性設定 PreAuthenticate 為 true。