Autenticazione InternetInternet Authentication

Le classi System.Net supportano svariati meccanismi di autenticazione client, inclusi i metodi di autenticazione Internet standard come l'autenticazione di base, digest, di negoziazione, NTLM e Kerberos, nonché metodi personalizzati che è possibile creare.The System.Net classes support a variety of client authentication mechanisms, including the standard Internet authentication methods basic, digest, negotiate, NTLM, and Kerberos authentication, as well as custom methods that you can create.

Le credenziali di autenticazione sono archiviate nelle classi NetworkCredential e CredentialCache, che implementano l'interfaccia ICredentials.Authentication credentials are stored in the NetworkCredential and CredentialCache classes, which implement the ICredentials interface. Quando su una di queste classi viene eseguita una query per richiedere le credenziali, la query restituisce un'istanza della classe NetworkCredential.When one of these classes is queried for credentials, it returns an instance of the NetworkCredential class. Il processo di autenticazione viene gestito dalla classe AuthenticationManager, mentre l'effettivo processo di autenticazione viene eseguito da una classe del modulo di autenticazione che implementa l'interfaccia IAuthenticationModule.The authentication process is managed by the AuthenticationManager class, and the actual authentication process is performed by an authentication module class that implements the IAuthenticationModule interface. È necessario registrare un modulo di autenticazione personalizzato con AuthenticationManager prima di poterlo usare. I metodi di autenticazione di base, digest, di negoziazione, NTLM e Kerberos sono registrati per impostazione predefinita.You must register a custom authentication module with the AuthenticationManager before it can be used; modules for the basic, digest, negotiate, NTLM, and Kerberos authentication methods are registered by default.

NetworkCredential archivia un set di credenziali associate a una singola risorsa Internet identificata da un URI e restituisce le credenziali in risposta a qualsiasi chiamata al metodo GetCredential.NetworkCredential stores a set of credentials associated with a single Internet resource identified by a URI and returns them in response to any call to the GetCredential method. La classe NetworkCredential è in genere usata da applicazioni che accedono a un numero limitato di risorse Internet o da applicazioni che usano lo stesso set di credenziali in tutti i casi.The NetworkCredential class is typically used by applications that access a limited number of Internet resources or by applications that use the same set of credentials in all cases.

La classe CredentialCache archivia una raccolta di credenziali per diverse risorse Web.The CredentialCache class stores a collection of credentials for various Web resources. Quando viene chiamato il metodo GetCredential, CredentialCache restituisce il set di credenziali corretto, determinato dall'URI della risorsa Web e dallo schema di autenticazione richiesto.When the GetCredential method is called, CredentialCache returns the proper set of credentials, as determined by the URI of the Web resource and the requested authentication scheme. Le applicazioni che usano un'ampia gamma di risorse Internet con schemi di autenticazione diversi traggono vantaggio dall'uso della classe CredentialCache, che archivia tutte le credenziali e le fornisce in base alle richieste.Applications that use a variety of Internet resources with different authentication schemes benefit from using the CredentialCache class, since it stores all the credentials and provides them as requested.

Quando una risorsa Internet richiede l'autenticazione, il metodo WebRequest.GetResponse invia WebRequest a AuthenticationManager insieme alla richiesta di credenziali.When an Internet resource requests authentication, the WebRequest.GetResponse method sends the WebRequest to the AuthenticationManager along with the request for credentials. La richiesta viene quindi autenticata in base al processo seguente:The request is then authenticated according to the following process:

  1. AuthenticationManager chiama il metodo Authenticate in ognuno dei moduli di autenticazione registrati, nell'ordine in cui sono stati registrati.The AuthenticationManager calls the Authenticate method on each of the registered authentication modules in the order they were registered. AuthenticationManager usa il primo modulo che non restituisce null per eseguire il processo di autenticazione.The AuthenticationManager uses the first module that does not return null to carry out the authentication process. I dettagli del processo variano a seconda del tipo di modulo di autenticazione coinvolto.The details of the process vary depending on the type of authentication module involved.

  2. Quando il processo di autenticazione è completo, il modulo di autenticazione restituisce un oggetto Authorization a WebRequest che contiene le informazioni necessarie per accedere alla risorsa Internet.When the authentication process is complete, the authentication module returns an Authorization to the WebRequest that contains the information needed to access the Internet resource.

Alcuni schemi di autenticazione possono autenticare un utente senza prima eseguire la richiesta di una risorsa.Some authentication schemes can authenticate a user without first making a request for a resource. Un'applicazione può risparmiare tempo tramite la preautenticazione dell'utente con la risorsa, eliminando in questo modo almeno un round trip al server.An application can save time by preauthenticating the user with the resource, thus eliminating at least one round trip to the server. In alternativa, l'applicazione può eseguire l'autenticazione durante l'avvio del programma per rispondere più rapidamente all'utente in seguito.Or, it can perform authentication during program startup in order to be more responsive to the user later. Gli schemi di autenticazione che possono usare la preautenticazione impostano la proprietà PreAuthenticate su true.Authentication schemes that can use preauthentication set the PreAuthenticate property to true.

Vedere ancheSee Also

Autenticazione di base e del digestBasic and Digest Authentication
Autenticazione NTLM e KerberosNTLM and Kerberos Authentication
Sicurezza nella programmazione di reteSecurity in Network Programming