Assertions SAML définies dans le standard SAML Token Profile
Le standard OASIS Web Services Security SAML Token Profile définit la façon d'utiliser les assertions SAML (Security Assertion Markup Language) dans la spécification Web Services Security SOAP Message Security.
Ce produit prend en charge deux versions de la norme OASIS SAML : Assertions and Protocol for the OASIS Security Assertion Markup Language (SAML) V1.1 et Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0.
Le standard décrit l'utilisation des assertions SAML en tant que jetons de sécurité dans l'en-tête <wsse:Security>, tel qu'il est défini dans la spécification WSS : SOAP Message Security. Une signature XML peut être utilisée pour lier les sujets et les instructions de l'assertion SAML au message SOAP.
Les méthodes de confirmation du sujet définissent le mécanisme par lequel une entité fait la preuve de sa relation entre le sujet et les affirmations des assertions SAML. Le standard WSS: SAML Token Profile décrit l'utilisation de trois méthodes de confirmation du sujet : bearer (porteur), holder-of-key (détenteur de clé) et sender-vouches (envoyeur garant). Ce produit prend en charge les trois méthodes de confirmation. Dans la méthode de confirmation du sujet bearer, la relation entre le sujet et les affirmations est implicite. Il n'existe pas d'opération spécifique pour établir la relation.
Dans la mesure où aucune clé n'est associée à un jeton bearer, la protection des messages SOAP, si nécessaire, doit être assurée à l'aide d'un mécanisme de niveau transport ou d'un autre jeton de sécurité, par exemple un jeton X.509 ou Kerberos, pour la protection de niveau message. Avec la méthode de confirmation du sujet holder-of-key, la preuve de la relation entre le sujet et les affirmations est établie par la signature d'une portion du message SOAP avec la clé spécifiée dans l'assertion SAML. Une clé étant associée au jeton holder-of-key, celui-ci peut être utilisé pour assurer une protection de niveau message (signature et chiffrement) du message SOAP.
- Un expéditeur configure une session SSL (secure sockets layer) avec un récepteur à l'aide de l'authentification du certificat client.
- Un expéditeur signe de façon numérique les assertions SAML avec le message SOAP à l'aide de l'algorithme de transformation de référence de jeton de sécurité. Un expéditeur peut utiliser le chiffrement de message SSL ou SOAP pour protéger la confidentialité.
Assertion Bearer
Une assertion SAML est une assertion bearer si elle contient l'élément <saml:ConfirmationMethod> bearer, tel qu'il est défini dans les spécifications OASIS Web Services Security. Pour plus d'informations, reportez-vous aux documents de spécification.<saml:SubjectConfirmation>
<saml:ConfirmationMethod>
urn:oasis:names:tc:SAML:1.0:cm:bearer
</saml:ConfirmationMethod>
</saml:SubjectConfirmation>
<saml2:SubjectConfirmation
Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
</saml2:SubjectConfirmation>
Assertion holder-of-key
Une assertion SAML est une assertion holder-of-key si elle inclut l'élément SubjectConfirmation contenant un élément saml:ConfirmationMethod dont la valeur est holder-of-key, et un élément ds:KeyInfo. Pour plus d'informations, reportez-vous aux documents de spécification.L'information ds:KeyInfo dans l'élément SubjectConfirmation identifie une clé publique ou secrète servant à confirmer l'identité du sujet. L'assertion holder-of-key contient aussi un élément ds:Signature qui protège l'intégrité de l'élément de confirmation ds:KeyInfo, comme l'établi l'autorité de vérification.
<saml:SubjectConfirmation>
<saml:ConfirmationMethod>
urn:oasis:names:tc:SAML:1.0:cm: holder-of-key
</saml:ConfirmationMethod>
<ds:KeyInfo>
<ds:KeyValue>. . .</ds:KeyValue>
</ds:KeyInfo>
</saml:SubjectConfirmation>
<saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:holder-of-key">
<saml2:SubjectConfirmationData>
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
......
</ds:KeyInfo>
</saml2:SubjectConfirmationData>
</saml2:SubjectConfirmation>
Assertions sender-vouches
<saml:SubjectConfirmation>
<saml:ConfirmationMethod>
urn:oasis:names:tc:SAML:1.0:cm:sender-vouches
</saml:ConfirmationMethod>
</saml:SubjectConfirmation>
<saml2:SubjectConfirmation
Method="urn:oasis:names:tc:SAML:2.0:cm:sender-vouches">
</saml2:SubjectConfirmation>
Clé symétrique dans l'assertion holder-of-key
Une assertion SAML holder-of-key sert de jeton de protection. Ce type de jeton de protection peut utiliser une clé symétrique comme clé de preuve. Le client utilise la clé de preuve pour prouver à la partie utilisatrice qu'il est effectivement propriétaire du jeton SAML émis. Lorsqu'un service de jeton de sécurité (STS) émet un jeton SAML utilisant une clé de preuve symétrique, le jeton contient un clé chiffrée destinée au service cible. Le STS envoie également la même clé de preuve au demandeur dans un élément <RequestedProofToken> inclus dans la réponse RSTR. Le client de services web présente alors le jeton SAML au service cible, aussi connu sous le nom de partie utilisatrice (RP - relying party), et signe le message de l'application à l'aide de la clé de preuve reçue.<t:KeyType> http://docs.oasis-open.org/ws-sx/ws-trust/200512/SymmetricKey
</t:KeyType>
<t:KeySize>256</t:KeySize>
<saml:SubjectConfirmation>
<saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:holder-of-key</saml:ConfirmationMethod>
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<enc:EncryptedKey xmlns:enc="http://www.w3.org/2001/04/xmlenc#">
<enc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
</enc:EncryptionMethod>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>MIIB3 . . . vO3bdg</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
<enc:CipherData>
<enc:CipherValue>P5Kb . . . rOTvII</enc:CipherValue>
</enc:CipherData>
</enc:EncryptedKey>
</ds:KeyInfo>
</saml:SubjectConfirmation>
Clé publique dans l'assertion holder-of-key
Lorsqu'une assertion SAML holder-of-key est utilisée comme jeton de protection, celui-ci peut utiliser une clé publique comme clé de preuve. Le client utilise la clé de preuve pour prouver à la partie utilisatrice qu'il est effectivement propriétaire du jeton SAML émis. La clé de preuve publique présente l'avantage, par rapport à une clé symétrique, de permettre au client de ne pas partager la clé secrète avec le service STS et la partie utilisatrice. La clé de preuve publique peut être un certificat X509, ou une clé publique RSA (Rivest, Shamir et Adleman).<trust:UseKey>
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<X509Data>
<X509Certificate>MIIGCzCCBPOgAwIBAgIQcSgVwaoQv6dG. . .1GqB
</X509Certificate>
</X509Data>
</KeyInfo>
</trust:UseKey>
<saml:SubjectConfirmation>
<saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:holder-of-key</saml:ConfirmationMethod>
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:KeyValue>
<ds:RSAKeyValue>
<ds:Modulus>hYHQm. . . ZnH1S0=</ds:Modulus>
<ds:Exponent>AQAB</ds:Exponent>
</ds:RSAKeyValue>
</ds:KeyValue>
</ds:KeyInfo>
</saml:SubjectConfirmation>