Tokens y notificaciones SAML

Los tokens del lenguaje de marcado SAML (Security Assertions Markup Language) son representaciones en XML de afirmaciones. Los tokens SAML que Windows Communication Foundation (WCF) utiliza de forma predeterminada en los escenarios de seguridad federados son tokens emitidos.

Los tokens SAML llevan afirmaciones que son conjuntos de declaraciones hechas por una entidad sobre otra entidad. Por ejemplo, en escenarios de seguridad federados, las declaraciones son realizadas por un servicio de token de seguridad acerca de un usuario en el sistema. El servicio de token de seguridad firma el token SAML para indicar la autenticidad de las declaraciones contenidas en el token. Además, el token SAML está asociado con el material de clave criptográfica, del cual el usuario del token SAML demuestra 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 SAML desde un servicio de token de seguridad, autenticando en ese servicio de token de seguridad mediante credenciales de Windows.

  2. El servicio de token de seguridad emite un token SAML al 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. A continuación, el cliente presenta el token SAML al servicio de aplicación (el usuario de confianza) y firma el mensaje con esa clave de prueba.

  4. La firma sobre el token SAML indica a la parte que confía que el servicio de token de seguridad emitió el token. La firma de mensaje creada con la clave de prueba indica al usuario de confianza que el token se emitió al cliente.

De Reclamaciones a SamlAttributes

En WCF, las declaraciones de los tokens SAML se modelan como objetos SamlAttribute, que se pueden completar directamente desde objetos Claim, siempre que el objeto Claim tenga una propiedad Right de PossessProperty y la propiedad Resource sea de 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, ya sea cuando los emite un servicio de token de seguridad o cuando los clientes los presentan como parte de la autenticación, la cuota máxima de tamaño de mensaje debe ser lo suficientemente grande para dar cabida al token SAML y a las demás partes del mensaje. En los casos normales, las cuotas de tamaño de 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 distintas declaraciones del token SAML se convierten en IAuthorizationPolicy objetos 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