Cómo: Configurar las credenciales en un servicio de federación
En Windows Communication Foundation (WCF), crear un servicio federado consta de los siguientes procedimientos principales:
- Configurar un WSFederationHttpBinding o un enlace personalizado similar. Para obtener más información acerca de crear un enlace adecuado, vea Cómo: Crear un WSFederationHttpBinding.
- Configurar el IssuedTokenServiceCredential que controla cómo se autentican los tokens emitidos que se presentan al servicio.
En este tema se proporcionan los detalles sobre el segundo paso. Para obtener más información acerca de cómo funciona un servicio federado, vea Federación.
Para establecer las propiedades de IssuedTokenServiceCredential en el código
Utilice la propiedad IssuedTokenAuthentication de la clase ServiceCredentials para devolver una referencia a una instancia IssuedTokenServiceCredential. Se obtiene acceso a la propiedad desde la propiedad Credentials de la clase ServiceHostBase.
Establezca la propiedad AllowUntrustedRsaIssuers en true si los tokens emitidos automáticamente como las tarjetas CardSpace se van a autenticar. El valor predeterminado es false.
Rellene la colección devuelta por la propiedad KnownCertificates con instancias de la clase X509Certificate2. Cada instancia representa un emisor desde el que el servicio autenticará los tokens.
Nota
A diferencia de la colección del lado del cliente devuelta por la propiedad ScopedCertificates, la colección de certificados conocida no es una colección con clave. El servicio acepta los tokens que los certificados especificados emiten sin tener en cuenta la dirección del cliente que envió el mensaje con el token emitido (sujeto a las restricciones siguientes, que se describirán más adelante).
Establezca la propiedad CertificateValidationMode en uno de los valores de enumeración X509CertificateValidationMode. Esto sólo se puede hacer en código. El valor predeterminado es ChainTrust.
Si la propiedad CertificateValidationMode está establecida en Custom, asigne a continuación una instancia de la clase personalizada X509CertificateValidator a la propiedad CustomCertificateValidator.
Si CertificateValidationMode está definido en ChainTrust o PeerOrChainTrust, defina la propiedad RevocationMode en un valor apropiado de la enumeración X509RevocationMode. Tenga en cuenta que el modo de revocación no se utiliza en PeerTrust ni en los modos de validación Custom.
Si es necesario, asigne una instancia de una clase SamlSerializer personalizada a la propiedad SamlSerializer. Se necesita un serializador del Lenguaje de marcado de aserción de seguridad (SAML) personalizado, por ejemplo, para analizar las aserciones de SAML personalizadas.
Para establecer las propiedades de IssuedTokenServiceCredential en la configuración
Cree un elemento <issuedTokenAuthentication> como elemento secundario de un elemento <serviceCredentials>.
Establezca el atributo allowUntrustedRsaIssuers del elemento <issuedTokenAuthentication> en true si se autentica un token que se emitió a sí mismo como una tarjeta CardSpace.
Cree un elemento <knownCertificates> como elemento secundario del elemento <issuedTokenAuthentication>.
Cree cero o más elementos <add> como elementos secundarios del elemento <knownCertificates> y especifique cómo buscar el certificado mediante los atributos storeLocation, storeName, x509FindType y findValue.
Si es necesario, establezca el atributo samlSerializer del elemento <issuedTokenAuthentication> en el nombre de tipo de la clase SamlSerializer personalizada.
Ejemplo
El siguiente ejemplo define las propiedades de un IssuedTokenServiceCredential en el código.
Para que un servicio federado autentique un cliente, a continuación, debe cumplirse lo siguiente sobre el token emitido:
- Cuando la firma digital del token emitido utiliza un identificador de clave de seguridad de RSA, la propiedad AllowUntrustedRsaIssuers debe ser true.
- Cuando la firma del token emitido utiliza un número de serie de emisor de X.509, un identificador de clave de sujeto (SKI) de X.509 o un identificador de seguridad de huella digital de X.509, un certificado debe firmar el token emitido en la colección devuelta por la propiedad KnownCertificates de la clase IssuedTokenServiceCredential.
- Cuando se firma el token emitido utilizando un certificado X.509, el certificado debe validarse por la semántica especificada por el valor de la propiedad CertificateValidationMode, sin tener en cuenta si el certificado se envió al usuario de confianza como X509RawDataKeyIdentifierClause o se obtuvo de la propiedad KnownCertificates. Para obtener más información acerca de la validación del certificado X.509, vea Trabajar con certificados.
Por ejemplo, establecer CertificateValidationMode en PeerTrust autenticaría cualquier token emitido cuyo certificado de firma esté en el almacén de certificados TrustedPeople. En ese caso, defina la propiedad TrustedStoreLocation en CurrentUser o LocalMachine. Puede seleccionar otros modos, incluidos Custom. Cuando Custom está seleccionado, debe asignar una instancia de la clase X509CertificateValidator a la propiedad CustomCertificateValidator. El validador personalizado puede validar los certificados utilizando cualquier criterio que le guste. Para obtener más información, consulte Cómo crear un servicio que emplee un validador de certificado personalizado.
Consulte también
Tareas
Cómo deshabilitar sesiones seguras en WSFederationHttpBinding
Cómo: Crear un WSFederationHttpBinding
Cómo crear un cliente federado
Conceptos
Federación
Federación y confianza
Trabajar con certificados
Modos de autenticación de SecurityBindingElement