Autenticación de Internet

Las clases System.Net admiten diversos mecanismos de autenticación de cliente, incluidos los métodos de autenticación de Internet estándares básico, implícito, negociado, NTLM y autenticación Kerberos, así como métodos personalizados que puede crear.

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 las credenciales, devuelve una instancia de la clase NetworkCredential. El proceso de autenticación se administra mediante la clase AuthenticationManager y el proceso de autenticación real se realiza mediante una clase del módulo de autenticación que implementa la interfaz IAuthenticationModule. Debe registrar un módulo de autenticación personalizado con AuthenticationManager para que se pueda usar. Los módulos para los métodos de autenticación básico, implícito, negociado, NTLM y Kerberos están registrados de forma predeterminada.

NetworkCredential almacena un conjunto de credenciales asociadas a un único recurso de Internet identificado por un URI y las devuelve en respuesta a las llamadas al método GetCredential. La clase NetworkCredential la suelen usar las aplicaciones que tienen acceso a un número limitado de recursos de Internet o las aplicaciones que usan 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, CredentialCache devuelve el conjunto apropiado de credenciales, según lo determinado por el URI del recurso web y el esquema de autenticación solicitado. Las aplicaciones que usan diversos recursos de Internet con diferentes esquemas de autenticación se benefician del uso 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 la WebRequest a AuthenticationManager junto con la solicitud de credenciales. La solicitud se autentica según el proceso siguiente:

  1. AuthenticationManager llama al método Authenticate en cada uno de los módulos de autenticación registrados en el orden en el que se han registrado. AuthenticationManager usa el primer módulo que no devuelve null para llevar a cabo el proceso de autenticación. Los detalles del proceso varían según el tipo de módulo de autenticación implicado.

  2. Una vez completado el proceso de autenticación, el módulo de autenticación devuelve una Authorization a la WebRequest que contiene la información necesaria para tener acceso al recurso de Internet.

Algunos esquemas de autenticación pueden autenticar a un usuario sin realizar primero una solicitud para un recurso. Una aplicación puede ahorrar tiempo si autentica previamente al usuario con el recurso, lo que elimina al menos un recorrido de ida y vuelta al servidor. O bien, puede realizar la autenticación durante el inicio del programa para que responda mejor al usuario más adelante. Los esquemas de autenticación que pueden usar la autenticación previa establecen la propiedad PreAuthenticate en true.

Vea también