具有WS-Security的WCF客户端

我需要实现一个满足以下SOAP消息示例的WCF客户端:

   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     

我得到的最相似的是使用以下绑定配置和自定义绑定更改来包含UserNameSecurityTokenParameter:

           

这是我用来添加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" ); } 

但是,它无法连接和/或从服务器获得另一个响应而不是内部服务器错误(我假设由于不符合服务器预期的消息)

这是我发送的消息。

   http://edt.health.ontario.ca/EDTDelegate/uploadRequest  444361ee-277f-7732-c684-7a9923jfgh1b 124355467675   1111222   1111222 johndoe@examplemail.com  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   johndoe@examplemail.com 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     

有人可以告诉我我做错了什么吗? 我看到的第一件事是我在Signature / SignedInfo中只有2个参考部分,而在示例中有5个:-S请帮助!!! 提前致谢。

解决方案是根据这篇文章工作:

12个常见的wcf互相混淆 Yaron Naveh

2013年12月18日。亚伦还发表: 这篇文章解释了安大略省卫生和长期护理网络服务部的细节