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:
- EndpointSupportingTokenParameters
- OperationSupportingTokenParameters
- OptionalEndpointSupportingTokenParameters
- OptionalOperationSupportingTokenParameters
Á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
Crear un elemento de enlace de seguridad. El ejemplo siguiente crea SymmetricSecurityBindingElement con el modo de autenticación UserNameForCertificate. Utilice el método CreateUserNameForCertificateBindingElement.
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