Client WCF avec WS-Security

J’ai besoin d’implémenter un client WCF répondant à l’exemple de message SOAP suivant:

   444561ee-277f-77b2-c664-7a9923jfgh1b f68e6ff9-74f7-4022-8618-ec2cf0ee4b6a   4523394 johndoe    2012-06-26T16:18:15.185Z 2012-06-26T16:18:45.185Z   72214255   MIICMzCCAZygAwIBAgIET1e+dDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJDQTEQMA4GA1UECBMHT250YXJpbzENMAsGA1UEChMET0hJUDEVMBMGA1UECxMMUmVnaXN0cmF0aW9uMRcwFQYDVQQDEw4xNDIuMTQ1LjcwLjE3NzAeFw0xMjAzMDcyMDAwNTJaFw0xMzAzMDcyMDAwNTJaMF4xCzAJBgNVBAYTAkNBMRAwDgYDVQQIEwdPbnRhcmlvMQ0wCwYDVQQKEwRPSElQMRUwEwYDVQQLEwxSZWdpc3RyYXRpb24xFzAVBgNVBAMTDjE0Mi4xNDUuNzAuMTc3MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCs/JIP6CE5IkfTnD/c56K+QAYqETdLvW1xXJ6ipkVhjjC2ASKuuH4fvhbyxo2B4VugsL9r4E5jHEKoi+GDKOLlLZRfSy0cB8IcpXonAuGqMzhCoEQ1CdxNb9etMyvQGRKEBgniKKxTvpTyZdpYDi92up5E+FYL3jEejhp+1iDFJQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAHn8VZS169BJMa4E6SNLnY7u80zSh90mbrTUWjM1dEicv3jQMMsrWHfoCt+nRSqfNLUTLc8U0LqiB3jnnNJgJt1T7Sp8eUZPdH0gY3i83ZXA8HDFKMZF3qL8I8ncu8FPcZGYBNhYrGjXXsuqXimiTIjxgm06ErRa/51szOFFxWrB               FkhA37COGmsKeEH50LAGhKntvRpD0+xOGsGzXAV210k=         RA1O1voUNDV9+hi6IzNNxkTHfEdu2pu6fppiwN23JGI=         3vVj2VEbLKEvGy4yt7k8i2BeWUOaCygnFMduT7EyP3A=         yFOmFgMDHMBooWIEsB3azib2EX7fR+Ich03J19kFMVE=         zoxMcAQ2WLBIir333NJk52r4axwznflX+KxMQTPFvfQ=    HmOiZS4gZbxv07+sLjyi7Vfg3Rfpvr3IVnaHfRp4aKvg5yBFlLocPIYwhUhmCCs1LXrJxR0hsbe0K2sz3ML5hH+PDEGetlPKSN9R1x9K95w7V1JQcTUULiVgNGLCfxgFV2HNy1iNvlTc7COS+7w4xSgsY4KlVgrBw0T1srhHpUA=                00123 CL     

Le plus similaire que j’ai eu a été avec la configuration de liaison suivante et modification de liaison personnalisée pour inclure le UserNameSecurityTokenParameter:

           

C’est le code que j’utilise pour append le UsnerNameSupportingToken:

 public static Binding AddUserNameSupportingTokenToBinding( Binding binding ) { var elements = binding.CreateBindingElements( ); var security = elements.Find( ); if ( security != null ) { var tokenParameters = new UserNameSecurityTokenParameters( ); tokenParameters.InclusionMode = SecurityTokenInclusionMode.AlwaysToRecipient; tokenParameters.RequireDerivedKeys = false; security.EndpointSupportingTokenParameters.SignedEncrypted.Add( tokenParameters ); return new CustomBinding( CollectionUtils.GetArray( elements ) ); } throw new ArgumentException( "Binding contains no SecurityBindingElement" ); } 

Cependant, il est impossible de se connecter et d’obtenir une réponse du serveur autre qu’une erreur interne du serveur (je suppose que le message n’a pas été conforme à celui attendu par le serveur).

C’est le message que j’envoie.

   http://edt.health.ontario.ca/EDTDelegate/uploadRequest  444361ee-277f-7732-c684-7a9923jfgh1b 124355467675   1111222   1111222 [email protected]  urn:uuid:5e622e7a-ec98-4ee3-b7c8-1cfaec188136  http://www.w3.org/2005/08/addressing/anonymous  uIDPo86225XKzvdDstW/QNIEkkkAAAAAUbXx6AYITkSuseKiCyJ3EndgEcfrnxtMkRLZu91buJMACQAA https://ws.ebs.health.gov.on.ca:1441/EDTService/EDTService   2013-10-07T14:47:11.687Z 2013-10-07T14:52:11.687Z   [email protected] 54321  MIIB0TCCATqgAwIBAgIQZSTkN52mXZFGuZfVCPPu4TANBgkqhkiG9w0BAQUFADAUMRIwEAYDVQQDEwlsb2NhbGhvc3QwHhcNMTMwMTA0MTcwMTQxWhcNMTgwMTA0MDAwMDAwWjAUMRIwEAYDVQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAN+FQSfgZuCELM+dfMLM+JUecV9313wmgFRMKVWHlgGml/9QrSCXmSoiiTZl+5n7DLmjTnB7RbrAu/rva6KPPulN5QOBrYQDvea0Iw0eUXsZw2DYKGMpeCOnZI73g4LXSTq7MsOUc+6U579Sca0clPjXTJwZ/wO0E1aq/x5OJjhDAgMBAAGjJDAiMAsGA1UdDwQEAwIEsDATBgNVHSUEDDAKBggrBgEFBQcDATANBgkqhkiG9w0BAQUFAAOBgQAVxQTfRI26bqJthHgETMLPmtMPaUwRQEcy7Kn1GQdPKXBaSHbN8iUkUoUBRvWCBVd+PilCgNXPMyK52WZJEqGyNdBzVR9oXa1sYWeXm3Nic0Qp2uZ7cMA5t/TLLdb7L03QdJ2OWtaPc29yClquas5OOTQtDBL79Nzm+/z45M12DQ==          nJu/wqr3l9c+bsczWgNkoqR9orc=       YwVphhmJ70apQiykWlMqZ7dv2S4=   BpulyIHAVry9TW8T2mZvPv9yP8FEGa21UdedB3KZWo7xQ4fbYrewAuOkacm2NN2q+a9jlc5iHRIQ9Ktdb0EieHzXQne2PNiIl2E1QXT5NG/MDAfnczvkXxbG2hrCdP0ZXbMIwtA2znv0u1/UwrFEjm5ILqUd+wgTlqDaEpgCpBU=               C:\CL\1\HI155614.018 CL     

Est-ce que quelqu’un pourrait me dire ce que je fais mal? La première chose que j’ai vue est que je n’ai que 2 sections de référence dans Signature / SignedInfo, alors que dans l’exemple, il y en a 5.: -S Please help !!! Merci d’avance.

La solution était de travailler selon ce post:

12 confusions d’interopérabilité communes de Yaron Naveh

Le 18 décembre 2013. Yaron a également publié: cet article explique les détails des services Web du ministère de la Santé et des Soins de longue durée de l’Ontario.