This interface is implemented by all web-client credentials. The class NetworkCredential works with authentication schemes such as Basic and Digest authentication, NTLM, and Kerberos. If you need to implement a client authentication scheme not supported by .NET (such as SSL client certificates), you need to implement ICredentials and add a new instance of your implementation to your application's credential cache. For more information on using a credential cache, see CredentialCache . public interface ICredentials { // Public Instance Methods public NetworkCredential GetCredential (Uri uri , string authType ); } Implemented ByCredentialCache , NetworkCredential Returned ByCredentialCache.DefaultCredentials , IWebProxy.Credentials , WebClient.Credentials , WebProxy.Credentials , WebRequest.Credentials Passed ToAuthenticationManager.{Authenticate( ) , PreAuthenticate( )} , IAuthenticationModule.{Authenticate( ) , PreAuthenticate( )} , IWebProxy.Credentials , WebClient.Credentials , WebProxy.{Credentials , WebProxy( )} , WebRequest.Credentials , System.Xml.XmlResolver.Credentials |