Compartir a través de


Cómo: Crear una credencial de apoyo

Es posible tener un esquema de seguridad personalizado que requiera más de una credencial. Por ejemplo, un servicio puede solicitar del cliente un nombre de usuario y contraseña, pero también una credencial que demuestre que el cliente tiene más de 18 años. La segunda credencial es una credencial de apoyo. En este tema, se explica cómo implementar dichos credenciales en un cliente Windows Communication Foundation (WCF).

Nota

La especificación para admitir las credenciales es parte de la especificación WS-SecurityPolicy. Para obtener más información, consulte https://go.microsoft.com/fwlink/?LinkId=88537.

Tokens admitidos

En resumen, al utilizar el modo de seguridad, una credencial primaria siempre se utiliza para proteger el mensaje (por ejemplo, un certificado X.509 o un vale de Kerberos).

Como ha definido la especificación, un enlace de seguridad utiliza tokens para proteger el intercambio de mensajes. Un token es una representación de una credencial de seguridad.

El enlace de seguridad utiliza un testigo primario identificado en la directiva de enlace de seguridad para crear una firma. Esta firma se conoce como la firma del mensaje.

Los tokens adicionales se pueden especificar para aumentar las notificaciones proporcionadas por el token asociado a la firma del mensaje.

Endosar, firmar y cifrar

Una credencial de aprobación produce como resultado un token de aprobación transmitido dentro del mensaje. La especificación de WS-SecurityPolicy define cuatro maneras de asociar un token de aprobación al mensaje, tal y como se describe en la tabla siguiente.

Propósito Descripción

Firmado

El token de aprobación está incluido en el encabezado de seguridad y es firmado por la firma del mensaje.

Endosar

Un token endosado firma la firma del mensaje.

Firmar y endosar

Los tokens firmados y endosados firman el elemento ds:Signature completo generado a partir de la firma del mensaje y están firmados por esa firma del mensaje; es decir, ambos tokens (el token utilizado para la firma del mensaje y el token endosado y firmado) se firman entre sí.

Firmar y cifrar

Los tokens de aprobación firmados y cifrados son tokens de aprobación firmados que también se cifran cuando aparecen en wsse:SecurityHeader.

Programar credenciales de aprobación

Para crear un servicio que utiliza los tokens de aprobación, usted debe crear customBinding Element. (Para obtener más información, consulte Cómo: Crear un enlace personalizado mediante SecurityBindingElement.)

El primer paso cuando se crea un enlace personalizado es crear un elemento de enlace de seguridad, que puede ser uno de tres tipos:

Todas las clases heredan de SecurityBindingElement, que incluye cuatro propiedades pertinentes:

Ámbitos

Existen dos ámbitos para admitir las credenciales:

  • Los tokens de aprobación de extremo admiten todas las operaciones de un extremo. Es decir, se puede utilizar la credencial que el token de aprobación representa siempre que se invoca una operación de extremo.
  • Los tokens de aprobación de la operación admiten sólo una operación de extremo concreta.

Tal y como han indicado los nombres de la propiedad, se puede requerir las credenciales de aprobación o estas pueden ser opcionales. Es decir, si la credencial de aprobación se utiliza si está presente, aunque no es necesario, pero no se producirá un error en la autenticación si no está presente.

Procedimientos

Para crear un enlace personalizado que incluye credenciales de aprobación

  1. Crear un elemento de enlace de seguridad. El ejemplo siguiente crea SymmetricSecurityBindingElement con el modo de autenticación UserNameForCertificate. Utilice el método CreateUserNameForCertificateBindingElement.

  2. Agregue el parámetro de aprobación a la colección de tipos devuelta por la propiedad adecuada (Endorsing, Signed, SignedEncryptedo SignedEndorsed). Los tipos en los nombres de espacio System.ServiceModel.Security.Tokens incluyen tipos utilizados normalmente, como X509SecurityTokenParameters.

Ejemplo

Descripción

En el ejemplo siguiente se crea una instancia deSymmetricSecurityBindingElement y agrega una instancia de la clase KerberosSecurityTokenParameters a la colección que ha devuelto la propiedad endosada.

Código

Consulte también

Conceptos

Cómo: Crear un enlace personalizado mediante SecurityBindingElement