Jetons SAML et revendications

Les jetons SAML (Security Assertions Markup Language) sont des représentations XML de revendications. Par défaut, les jetons SAML qu'utilise Windows Communication Foundation (WCF) dans les scénarios de sécurité fédérée sont des jetons émis.

Les jetons SAML comportent des instructions qui sont des ensembles de revendications générées par une entité au sujet d'une autre entité. Par exemple, dans des scénarios de sécurité fédérée, les instructions sont générées par un service de jeton de sécurité au sujet d'un utilisateur dans le système. Le service de jeton de sécurité signe le jeton SAML pour indiquer la véracité des instructions incluses dans le jeton. De plus, le jeton SAML est associé à du matériel de clé de chiffrement dont l'utilisateur du jeton SAML prouve la connaissance. Cette preuve satisfait la partie de confiance que le jeton SAML a été émis, en fait, pour cet utilisateur. Par exemple, dans un scénario classique :

  1. Un client demande un jeton SAML à un service de jeton de sécurité en s'authentifiant auprès de ce service à l'aide des informations d'identification Windows.

  2. Le service de jeton de sécurité émet un jeton SAML pour le client. Le jeton SAML est signé avec un certificat associé au service de jeton de sécurité et contient une clé de vérification chiffrée pour le service cible.

  3. Le client reçoit également une copie de la clé de preuve. Le client présente ensuite le jeton SAML au service d'application (la partie de confiance) et signe le message avec cette clé de preuve.

  4. La signature sur le jeton SAML indique à la partie de confiance que le service de jeton de sécurité a émis le jeton. La signature de message créée avec la clé de vérification indique à la partie de confiance que le jeton a été émis pour le client.

Des revendications aux éléments SamlAttributes

Dans WCF, les instructions incluses dans les jetons SAML sont modélisées en objets SamlAttribute, qui peuvent être remplis directement à partir d'objets Claim à condition que l'objet Claim ait une propriété Right définie sur PossessProperty et que la propriété Resource soit du type String. Par exemple :

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)

Notes

Lorsque des jetons SAML sont sérialisés dans des messages, lorsqu'ils sont émis par un service de jeton de sécurité ou lorsqu'ils sont présentés par des clients à des services dans le cadre de l'authentification, le quota de taille maximale de message doit être suffisamment important pour prendre en charge le jeton SAML et les autres parties du message. Dans un cas normal, les quotas de taille de message par défaut sont suffisants. Toutefois, dans le cas où un jeton SAML est de grande taille parce qu'il contient des centaines de revendications, vous pouvez avoir besoin d'augmenter les quotas pour prendre en charge le jeton sérialisé. Pour plus d’informations, consultez Considérations sur la sécurité des données.

Des éléments SamlAttributes aux revendications

Lorsque des jetons SAML sont reçus dans des messages, les différentes instructions incluses dans le jeton SAML sont transformées en objets IAuthorizationPolicy qui sont placés dans AuthorizationContext. Les revendications provenant de chaque instruction SAML sont retournées par la propriété ClaimSets de AuthorizationContext et peuvent être examinées pour déterminer s'il convient d'authentifier et d'autoriser l'utilisateur.

Voir aussi