Autenticación en Internet
Las clases System.Net admiten varios mecanismos de autenticación de cliente, incluidos los métodos estándar de Internet, como autenticación básica, implícita, negociada, NTLM y Kerberos, así como métodos personalizados que puede crear el usuario.
Las credenciales de autenticación se almacenan en las clases NetworkCredential y CredentialCache, que implementan la interfaz ICredentials. Cuando se consulta una de estas clases para obtener credenciales, devuelve una instancia de la clase NetworkCredential. La clase AuthenticationManager administra el proceso de autenticación, y el proceso de autenticación real lo ejecuta una clase de módulo de autenticación que implementa la interfaz IAuthenticationModule. Antes de utilizar un módulo de autenticación personalizado se debe registrar con AuthenticationManager; los módulos para los métodos de autenticación básica, implícita, negociada, NTLM y Kerberos se registran de forma predeterminada.
La clase NetworkCredential almacena un conjunto de credenciales asociadas a un único recurso de Internet identificado mediante un identificador de recursos uniforme (URI, Uniform Recourse Identifier) y las devuelve en respuesta a las llamadas efectuadas al método GetCredential. Esta clase es utilizada normalmente por aplicaciones que tienen acceso a un número limitado de recursos de Internet o por aplicaciones que utilizan el mismo conjunto de credenciales en todos los casos.
La clase CredentialCache almacena una colección de credenciales para diversos recursos Web. Cuando se llama al método GetCredential, esta clase devuelve el conjunto de credenciales pertinente, de acuerdo con lo determinado por el identificador URI del recurso Web y la modalidad de autenticación solicitada. Las aplicaciones que utilizan varios recursos de Internet con diferentes modalidades de autenticación se benefician de la utilización de la clase CredentialCache, ya que almacena todas las credenciales y las proporciona cuando se solicitan.
Cuando un recurso de Internet solicita autenticación, el método WebRequest.GetResponse envía el objeto WebRequest a AuthenticationManager junto con la solicitud de credenciales. A continuación, la solicitud se autentica de acuerdo con el proceso siguiente:
- AuthenticationManager llama al método Authenticate en cada uno de los módulos de autenticación registrados, siguiendo el orden en que se registraron. AuthenticationManager utiliza el primer módulo que no devuelve null para ejecutar el proceso de autenticación. Los detalles del proceso varían dependiendo del tipo de módulo de autenticación implicado.
- Una vez completado el proceso de autenticación, el módulo de autenticación devuelve una instancia de Authorization al objeto WebRequest que contiene la información necesaria para obtener acceso al recurso de Internet.
Algunas modalidades de autenticación pueden autenticar a un usuario sin tener que realizar previamente una solicitud de un recurso. Una aplicación puede ahorrar tiempo si autentica previamente al usuario con el recurso, eliminando de ese modo una acción de ida y vuelta al servidor como mínimo. Otra opción es realizar la autenticación durante el inicio del programa para que la respuesta al usuario sea más rápida posteriormente. Las modalidades de autenticación que pueden utilizar la autenticación previa establecen la propiedad CanPreAuthenticate en true.
Vea también
Autenticación básica e implícita | Autenticación NTLM y Kerberos | Seguridad en Internet