Compartir a través de


Cómo: Crear un autenticador de tokens de seguridad personalizado

En este tema se muestra cómo crear un autenticador de tokens de seguridad personalizado y cómo integrarlo con un administrador de tokens de seguridad personalizado. Un autenticador de tokens de seguridad valida el contenido de un token de seguridad proporcionado con un mensaje entrante. Si la validación es correcta, el autenticador devuelve una colección de instancias IAuthorizationPolicy que, cuando se evalúa, devuelve un conjunto de notificaciones.

Para utilizar un autenticador de tokens de seguridad personalizado en Windows Communication Foundation (WCF), debe crear primero credenciales personalizadas e implementaciones del administrador de tokens de seguridad. Para obtener más información sobre cómo crear credenciales personalizadas y un administrador de tokens de seguridad, vea Cómo: Crear credenciales de cliente y servicio personalizadas. Para obtener más información sobre las credenciales, el administrador de tokens de seguridad y las clases de proveedor y de autenticador, vea Arquitectura de seguridad.

Procedimientos

Para crear un autenticador de token de seguridad personalizado

  1. Defina una clase nueva derivada de la clase SecurityTokenAuthenticator.

  2. Invalide el método CanValidateTokenCore. El método devuelve true o false en función de si el autenticador personalizado puede validar el tipo de token entrante o no.

  3. Invalide el método ValidateTokenCore. Este método necesita validar adecuadamente el contenido del token. Si el token pasa la fase de la validación, devuelve una colección de instancias IAuthorizationPolicy. El ejemplo siguiente utiliza una implementación de la directiva de autorización personalizada que se creará en el procedimiento siguiente.

El código anterior devuelve una colección de directivas de autorización en el método CanValidateToken. WCF no proporciona ninguna implementación pública de esta interfaz. El procedimiento siguiente muestra cómo hacer esto para sus propios requisitos.

Para crear una directiva de autorización personalizada

  1. Defina una nueva clase que implementa la interfaz IAuthorizationPolicy.

  2. Implemente la propiedad de sólo lectura Id. Una manera de implementar esta propiedad es generar un identificador único global (GUID) en el constructor de clase y devolverlo cada vez que se solicita el valor para esta propiedad.

  3. Implemente la propiedad de sólo lectura Issuer. Esta propiedad necesita devolver un emisor de los conjuntos de notificaciones que se obtienen del token. Este emisor debería corresponderse con el emisor del token o con una autoridad que sea responsable de validar el contenido del token. El ejemplo siguiente utiliza la notificación del emisor que se pasó a esta clase desde el autenticador de tokens de seguridad personalizado creado en el procedimiento anterior. El autenticador de tokens de seguridad personalizado utiliza el conjunto de notificaciones proporcionado por el sistema (devuelto por la propiedad System) para representar el emisor del token del nombre de usuario.

  4. Implemente el método Evaluate. Este método rellena una instancia de la clase EvaluationContext (pasadas como argumento) con notificaciones basadas en el contenido del token de seguridad entrante. El método devuelve true cuando se hace con la evaluación. En los casos en los que la implementación confía en la presencia de otras directivas de autorización que proporcionan información adicional al contexto de la evaluación, este método puede devolver false si la información necesaria no se encuentra todavía en el contexto de la evaluación. En ese caso, WCF llamará de nuevo al método después de evaluar el resto de las directivas de autorización generadas para el mensaje entrante si, por lo menos, una de esas directivas de autorización modificó el contexto de evaluación.

Cómo: Crear credenciales de cliente y servicio personalizadas describe cómo crear credenciales personalizadas y un administrador de tokens de seguridad personalizado. Para utilizar el autenticador de tokens de seguridad personalizado creado aquí, se modificará una implementación del administrador de tokens de seguridad para devolver el autenticador personalizado desde el método CreateSecurityTokenAuthenticator. El método devuelve un autenticador cuando se pasa un requisito de token de seguridad adecuado.

Para integrar un autenticador de tokens de seguridad personalizado con un administrador de tokens de seguridad personalizado

  1. Invalide el método CreateSecurityTokenAuthenticator en la implementación del administrador de tokens de seguridad personalizada.

  2. Agregue la lógica al método para habilitarlo con objeto de devolver su autenticador de tokens de seguridad personalizado basado en el parámetro SecurityTokenRequirement. El ejemplo siguiente devuelve un autenticador de tokens de seguridad personalizado si el tipo de token de requisitos de token es un nombre de usuario (representado por la propiedad UserName) y la dirección del mensaje para la que se solicita el autenticador de tokens de seguridad es la entrada (representada por el campo Input).

Consulte también

Tareas

Cómo crear un proveedor de tokens de seguridad personalizado

Referencia

SecurityTokenAuthenticator
SecurityTokenRequirement
SecurityTokenManager
UserNameSecurityToken

Conceptos

Cómo: Crear credenciales de cliente y servicio personalizadas
Arquitectura de seguridad