Informations techniques
Sécurité - WS-Security X.509 Certificate Token Profile
Cette politique de sécurité décrit comment un message SOAP doit être signé avec un certificat X.509 lorsqu'une authentification directe est utilisée entre le service consumer et le service provider.
Ce scénario s'applique à l'invocation du SecurityTokenService (STS).
Le header wsse:Security contient les parties suivantes :
- wsse:BinarySecurityToken avec le certificat consumer X.509v3 en notation base64 ;
- wsu:Timestamp d'une validité maximale de 5 minutes ;
- ds:Signature avec signature numérique sur BST, TMS et soapenv:Body. Chaque bloc est canonisé (Exclusive) et hashé (SHA256). La signature même est du type RSA-SHA256.
Exemple avec PICT (simplifié)
La deuxième opération de PICT (checkAccessControl) nécessite un certificat X.509 et une signature. Ce test permet de tester la validité de votre certificat et signature.
<soapenv:Envelope> <soapenv:Header> <wsse:Security> <wsse:BinarySecurityToken EncodingType="#Base64Binary" ValueType="#X509v3" wsu:Id="CertId">MIIMZjCCA4...==</wsse:BinarySecurityToken> <wsu:Timestamp wsu:Id="Timestamp"> <wsu:Created>2011-07-06T14:55:06Z</wsu:Created> <wsu:Expires>2011-07-06T14:56:06Z</wsu:Expires> </wsu:Timestamp> <ds:Signature> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="xml-exc-c14n#"/> <ds:SignatureMethod Algorithm="https://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/> <ds:Reference URI="#CertId"> <ds:Transforms> <ds:Transform Algorithm="xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="https://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>l0k0hbnk8578dYAc2POMcBLbTkY=</ds:DigestValue> </ds:Reference> <ds:Reference URI="#Timestamp"> <ds:Transforms> <ds:Transform Algorithm="xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="https://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>cUI6sRLLErYal1w1wLFxSCwjoCI=</ds:DigestValue> </ds:Reference> <ds:Reference URI="#id"> <ds:Transforms> <ds:Transform Algorithm="xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="https://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>bY22PjS0HPcmEHrslVdx3uDnnpU=</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue>uYUcEhYJ8y...==</ds:SignatureValue> <ds:KeyInfo Id="KeyId-5F1BFEB349E14F0ADF130996410619213"> <wsse:SecurityTokenReference> <wsse:Reference URI="#CertId" ValueType="#X509v3"/> </wsse:SecurityTokenReference> </ds:KeyInfo> </ds:Signature> </wsse:Security> </soapenv:Header> <soapenv:Body wsu:Id="id"> <pict:CheckAccessControlRequest> <type:Message>Hello World</type:Message> <type:Timestamp>2010-02-24T05:32:13</type:Timestamp> </pict:CheckAccessControlRequest> </soapenv:Body> </soapenv:Envelope>