Compartir a través de


Tokens y notificaciones SAML

Los tokens de Lenguaje de marcado de aserción de seguridad (SAML) son representaciones XML de notificaciones. De forma predeterminada, los tokens SAML utilizados por Windows Communication Foundation (WCF) en escenarios de seguridad asociados son tokens emitidos.

Los tokens SAML llevan instrucciones que son conjuntos de notificaciones realizadas por una entidad sobre otra entidad. Por ejemplo, en escenarios de seguridad asociados, las instrucciones son realizadas por un servicio de token de seguridad sobre un usuario del sistema. El servicio de token de seguridad firma el token SAML para indicar la veracidad de las instrucciones contenidas en el token. Además, el token SAML está asociado a material clave criptográfico del que el usuario del token SAML demuestra tener conocimiento. Esta prueba convence al usuario de confianza que el token SAML fue realmente emitido para ese usuario. Por ejemplo, en un escenario típico:

  1. Un cliente solicita un token de SAML de un servicio de token de seguridad, autenticándose para ese servicio de token de seguridad usando las credenciales de Windows.

  2. El servicio de token de seguridad emite un token SAML para el cliente. El token SAML se firma con un certificado asociado al servicio de token de seguridad y contiene una clave de prueba cifrada para el servicio de destino.

  3. El cliente también recibe una copia de la clave de prueba. El cliente presenta a continuación el token SAML al servicio de aplicación (el usuario de confianza) y firma el mensaje con esa clave de prueba.

  4. La firma a través del token SAML indica al usuario de confianza que el servicio de token de seguridad emitió el token. La firma del mensaje creada con la clave de prueba indica al usuario de confianza que el token fue emitido para el cliente.

De notificaciones a SamlAttributes

En WCF, las instrucciones en tokens SAML se modelan como objetos SamlAttribute, que se pueden rellenar directamente a partir de los objetos Claim, siempre que el objeto Claim tenga una propiedad Right de PossessProperty y la propiedad Resource sea del tipo String. Por ejemplo:

Claim myClaim = new Claim(
    ClaimTypes.GivenName, "Martin", Rights.PossessProperty);
SamlAttribute sa = new SamlAttribute(myClaim);
Dim myClaim As New Claim(ClaimTypes.GivenName, "Martin", _
Rights.PossessProperty)
Dim sa As New SamlAttribute(myClaim)

Nota

Cuando los tokens SAML se serializan en mensajes, o cuando los emite un servicio de token de seguridad o son presentados por los clientes a servicios como parte de autenticación, la cuota de tamaño máximo del mensaje debe ser suficientemente grande para alojar el token SAML y las otras partes del mensaje. En casos normales, las cuotas de tamaño del mensaje predeterminadas son suficientes. Sin embargo, en casos donde un token SAML es grande que porque contiene centenares de notificaciones, puede necesitar aumentar las cuotas para alojar el token serializado. Para obtener más información, consulte Consideraciones de seguridad para datos.

De SamlAttributes a notificaciones

Cuando los tokens SAML se reciben en mensajes, las diversas instrucciones en el token SAML se convierten en objetos IAuthorizationPolicy que se colocan en AuthorizationContext. La propiedad ClaimSets de AuthorizationContext devuelve las notificaciones de cada instrucción SAML y se pueden examinar para determinar si autenticar y autorizar al usuario.

Consulte también