具有WS-Security的WCF客户端

哇...

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

<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:msa="http://msa.ebs.health.ontario.ca/"
xmlns:idp="http://idp.ebs.health.ontario.ca/"
xmlns:edt="http://edt.health.ontario.ca/"
xmlns:ebs="http://ebs.health.ontario.ca/">
  <soapenv:Header>
    <ns2:EBS wsu:Id="id-1" xmlns:ns2="http://ebs.health.ontario.ca/" >
      <SoftwareConformanceKey>444561ee-277f-77b2-c664-7a9923jfgh1b</SoftwareConformanceKey>
      <AuditId>f68e6ff9-74f7-4022-8618-ec2cf0ee4b6a</AuditId>
    </ns2:EBS>
    <ns2:MSA wsu:Id="id-2" xmlns:ns2="http://msa.ebs.health.ontario.ca/" >
      <ServiceUserMUID>4523394</ServiceUserMUID>
      <UserID>johndoe</UserID>
    </ns2:MSA>
    <wsse:Security SOAP-ENV:mustUnderstand="1">
      <wsu:Timestamp wsu:Id="id-3">
        <wsu:Created>2012-06-26T16:18:15.185Z</wsu:Created>
        <wsu:Expires>2012-06-26T16:18:45.185Z</wsu:Expires>
      </wsu:Timestamp>
      <wsse:UsernameToken wsu:Id="id-4">
        <wsse:Username>72214255</wsse:Username>
      </wsse:UsernameToken>
      <wsse:BinarySecurityToken
      EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"
      ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"
      wsu:Id="X509-0EE1C2718CEDCA9FC213407274954261">
        MIICMzCCAZygAwIBAgIET1e+dDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJDQTEQMA4GA1UECBMHT250YXJpbzENMAsGA1UEChMET0hJUDEVMBMGA1UECxMMUmVnaXN0cmF0aW9uMRcwFQYDVQQDEw4xNDIuMTQ1LjcwLjE3NzAeFw0xMjAzMDcyMDAwNTJaFw0xMzAzMDcyMDAwNTJaMF4xCzAJBgNVBAYTAkNBMRAwDgYDVQQIEwdPbnRhcmlvMQ0wCwYDVQQKEwRPSElQMRUwEwYDVQQLEwxSZWdpc3RyYXRpb24xFzAVBgNVBAMTDjE0Mi4xNDUuNzAuMTc3MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCs/JIP6CE5IkfTnD/c56K+QAYqETdLvW1xXJ6ipkVhjjC2ASKuuH4fvhbyxo2B4VugsL9r4E5jHEKoi+GDKOLlLZRfSy0cB8IcpXonAuGqMzhCoEQ1CdxNb9etMyvQGRKEBgniKKxTvpTyZdpYDi92up5E+FYL3jEejhp+1iDFJQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAHn8VZS169BJMa4E6SNLnY7u80zSh90mbrTUWjM1dEicv3jQMMsrWHfoCt+nRSqfNLUTLc8U0LqiB3jnnNJgJt1T7Sp8eUZPdH0gY3i83ZXA8HDFKMZF3qL8I8ncu8FPcZGYBNhYrGjXXsuqXimiTIjxgm06ErRa/51szOFFxWrB
      </wsse:BinarySecurityToken>
      <ds:Signature Id="SIG-6" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" >
        <ds:SignedInfo>
          <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
            <ec:InclusiveNamespaces PrefixList="SOAP-ENV ebs soap-sec soapenv sp tns wsdl wsp wsse wsu xs xsi"
            xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" />
          </ds:CanonicalizationMethod>
          <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
          <ds:Reference URI="#id-1">
            <ds:Transforms>
              <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
                <ec:InclusiveNamespaces
                PrefixList="SOAP-ENV ebs soap-sec soapenv sp tns wsdl wsp wsse wsu xs xsi"
                xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" />
              </ds:Transform>
            </ds:Transforms>
            <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
            <ds:DigestValue>FkhA37COGmsKeEH50LAGhKntvRpD0+xOGsGzXAV210k=</ds:DigestValue>
          </ds:Reference>
          <ds:Reference URI="#id-2">
            <ds:Transforms>
              <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
                <ec:InclusiveNamespaces
                PrefixList="SOAP-ENV ebs soap-sec soapenv sp tns wsdl wsp wsse wsu xs xsi"
                xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" />
              </ds:Transform>
            </ds:Transforms>
            <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
            <ds:DigestValue>RA1O1voUNDV9+hi6IzNNxkTHfEdu2pu6fppiwN23JGI=</ds:DigestValue>
          </ds:Reference>
          <ds:Reference URI="#id-3">
            <ds:Transforms>
              <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
                <ec:InclusiveNamespaces PrefixList="SOAP-ENV ebs soap-sec soapenv sp tns wsdl wsp wsse xs xsi"
                xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" />
              </ds:Transform>
            </ds:Transforms>
            <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
            <ds:DigestValue>3vVj2VEbLKEvGy4yt7k8i2BeWUOaCygnFMduT7EyP3A=</ds:DigestValue>
          </ds:Reference>
          <ds:Reference URI="#id-4">
            <ds:Transforms>
              <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
                <ec:InclusiveNamespaces PrefixList="SOAP-ENV ebs soap-sec soapenv sp tns wsdl wsp wsu xs xsi"
                xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" />
              </ds:Transform>
            </ds:Transforms>
            <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
            <ds:DigestValue>yFOmFgMDHMBooWIEsB3azib2EX7fR+Ich03J19kFMVE=</ds:DigestValue>
          </ds:Reference>
          <ds:Reference URI="#id-5">
            <ds:Transforms>
              <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
                <ec:InclusiveNamespaces PrefixList="SOAP-ENV ebs soap-sec sp tns wsdl wsp wsse wsu xs xsi"
                xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" />
              </ds:Transform>
            </ds:Transforms>
            <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
            <ds:DigestValue>zoxMcAQ2WLBIir333NJk52r4axwznflX+KxMQTPFvfQ=</ds:DigestValue>
          </ds:Reference>
        </ds:SignedInfo>
        <ds:SignatureValue>
          HmOiZS4gZbxv07+sLjyi7Vfg3Rfpvr3IVnaHfRp4aKvg5yBFlLocPIYwhUhmCCs1LXrJxR0hsbe0K2sz3ML5hH+PDEGetlPKSN9R1x9K95w7V1JQcTUULiVgNGLCfxgFV2HNy1iNvlTc7COS+7w4xSgsY4KlVgrBw0T1srhHpUA=
        </ds:SignatureValue>
        <ds:KeyInfo Id="KI-0EE1C2718CEDCA9FC213407274954662">
          <wsse:SecurityTokenReference wsu:Id="STR-0EE1C2718CEDCA9FC213407274954663">
            <wsse:Reference URI="#X509-0EE1C2718CEDCA9FC213407274954261"
            ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" />
          </wsse:SecurityTokenReference>
        </ds:KeyInfo>
      </ds:Signature>
    </wsse:Security>
  </soapenv:Header>
  <soapenv:Body wsu:Id="id-5"
  xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <edt:upload>
      <upload>
        <content>
          <inc:Include href="cid:2341682853256" xmlns:inc="http://www.w3.org/2004/08/xop/include" />
        </content>
        <description>00123</description>
        <resourceType>CL</resourceType>
      </upload>
    </edt:upload>
  </soapenv:Body>
</soapenv:Envelope>

我最相似的是以下绑定配置和自定义绑定更改,以包括UserNameSecurityTokenParameter:

<bindings>
      <wsHttpBinding>
        <binding name="EDTDelegate"
                 closeTimeout="00:01:00"
                 openTimeout="00:01:00"
                 receiveTimeout="00:10:00"
                 sendTimeout="00:10:00"
                 allowCookies="false"
                 bypassProxyOnLocal="false"
                 hostNameComparisonMode="StrongWildcard"
                 maxBufferPoolSize="524288"
                 maxReceivedMessageSize="655360"
                 messageEncoding="Mtom"
                 textEncoding="utf-8"
                 useDefaultWebProxy="true">
          <security mode="TransportWithMessageCredential">
            <transport clientCredentialType="Basic" proxyCredentialType="None" realm=""/>
            <message clientCredentialType="Certificate" algorithmSuite="Default" establishSecurityContext="false" negotiateServiceCredential="false" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>

这是我用来添加UsnerNameSupportingToken的代码:

public static Binding AddUserNameSupportingTokenToBinding( Binding binding )
{
    var elements = binding.CreateBindingElements( );
    var security = elements.Find<SecurityBindingElement>( );
    if ( security != null )
    {
       var tokenParameters = new UserNameSecurityTokenParameters( );
       tokenParameters.InclusionMode = SecurityTokenInclusionMode.AlwaysToRecipient;
       tokenParameters.RequireDerivedKeys = false;
       security.EndpointSupportingTokenParameters.SignedEncrypted.Add( tokenParameters );

       return new CustomBinding( CollectionUtils.GetArray<BindingElement>( elements ) ); 
    }

  throw new ArgumentException( "Binding contains no SecurityBindingElement" );
}

但是,除了内部服务器错误外,它无法连接和/或无法从服务器获得其他响应(我认为是由于该消息与服务器期望的消息不兼容)。

这是我发送的消息。

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
  <s:Header>
    <a:Action s:mustUnderstand="1">http://edt.health.ontario.ca/EDTDelegate/uploadRequest</a:Action>
    <h:EBS xmlns:h="http://ebs.health.ontario.ca/" xmlns="http://ebs.health.ontario.ca/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <SoftwareConformanceKey xmlns="">444361ee-277f-7732-c684-7a9923jfgh1b</SoftwareConformanceKey>
      <AuditId xmlns="">124355467675</AuditId>
    </h:EBS>
    <h:IDP xmlns:h="http://idp.ebs.health.ontario.ca/" xmlns="http://idp.ebs.health.ontario.ca/">
      <ServiceUserMUID xmlns="">1111222</ServiceUserMUID>
    </h:IDP>
    <h:MSA xmlns:h="http://msa.ebs.health.ontario.ca/" xmlns="http://msa.ebs.health.ontario.ca/">
      <ServiceUserMUID xmlns="">1111222</ServiceUserMUID>
      <UserID xmlns="">[email protected]</UserID>
    </h:MSA>
    <a:MessageID>urn:uuid:5e622e7a-ec98-4ee3-b7c8-1cfaec188136</a:MessageID>
    <a:ReplyTo>
      <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
    </a:ReplyTo>
    <VsDebuggerCausalityData xmlns="http://schemas.microsoft.com/vstudio/diagnostics/servicemodelsink">uIDPo86225XKzvdDstW/QNIEkkkAAAAAUbXx6AYITkSuseKiCyJ3EndgEcfrnxtMkRLZu91buJMACQAA</VsDebuggerCausalityData>
    <To a:mustUnderstand="1" u:Id="_1" xmlns="http://www.w3.org/2005/08/addressing" xmlns:a="http://www.w3.org/2003/05/soap-envelope">https://ws.ebs.health.gov.on.ca:1441/EDTService/EDTService</To>
    <o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
      <u:Timestamp u:Id="_0">
        <u:Created>2013-10-07T14:47:11.687Z</u:Created>
        <u:Expires>2013-10-07T14:52:11.687Z</u:Expires>
      </u:Timestamp>
      <o:UsernameToken u:Id="uuid-5ee937ee-c1c6-404c-a827-1ca0ee22cfe1-1">
        <o:Username>[email protected]</o:Username>
        <o:Password o:Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">54321</o:Password>
      </o:UsernameToken>
      <o:BinarySecurityToken u:Id="uuid-5ee937ee-c1c6-404c-a827-1ca0ee22cfe1-2" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">MIIB0TCCATqgAwIBAgIQZSTkN52mXZFGuZfVCPPu4TANBgkqhkiG9w0BAQUFADAUMRIwEAYDVQQDEwlsb2NhbGhvc3QwHhcNMTMwMTA0MTcwMTQxWhcNMTgwMTA0MDAwMDAwWjAUMRIwEAYDVQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAN+FQSfgZuCELM+dfMLM+JUecV9313wmgFRMKVWHlgGml/9QrSCXmSoiiTZl+5n7DLmjTnB7RbrAu/rva6KPPulN5QOBrYQDvea0Iw0eUXsZw2DYKGMpeCOnZI73g4LXSTq7MsOUc+6U579Sca0clPjXTJwZ/wO0E1aq/x5OJjhDAgMBAAGjJDAiMAsGA1UdDwQEAwIEsDATBgNVHSUEDDAKBggrBgEFBQcDATANBgkqhkiG9w0BAQUFAAOBgQAVxQTfRI26bqJthHgETMLPmtMPaUwRQEcy7Kn1GQdPKXBaSHbN8iUkUoUBRvWCBVd+PilCgNXPMyK52WZJEqGyNdBzVR9oXa1sYWeXm3Nic0Qp2uZ7cMA5t/TLLdb7L03QdJ2OWtaPc29yClquas5OOTQtDBL79Nzm+/z45M12DQ==</o:BinarySecurityToken>
      <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
        <SignedInfo>
          <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
          <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
          <Reference URI="#_0">
            <Transforms>
              <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
            </Transforms>
            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
            <DigestValue>nJu/wqr3l9c+bsczWgNkoqR9orc=</DigestValue>
          </Reference>
          <Reference URI="#_1">
            <Transforms>
              <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
            </Transforms>
            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
            <DigestValue>YwVphhmJ70apQiykWlMqZ7dv2S4=</DigestValue>
          </Reference>
        </SignedInfo>
        <SignatureValue>BpulyIHAVry9TW8T2mZvPv9yP8FEGa21UdedB3KZWo7xQ4fbYrewAuOkacm2NN2q+a9jlc5iHRIQ9Ktdb0EieHzXQne2PNiIl2E1QXT5NG/MDAfnczvkXxbG2hrCdP0ZXbMIwtA2znv0u1/UwrFEjm5ILqUd+wgTlqDaEpgCpBU=</SignatureValue>
        <KeyInfo>
          <o:SecurityTokenReference>
            <o:Reference ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" URI="#uuid-5ee937ee-c1c6-404c-a827-1ca0ee22cfe1-2"/>
          </o:SecurityTokenReference>
        </KeyInfo>
      </Signature>
    </o:Security>
  </s:Header>
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <upload xmlns="http://edt.health.ontario.ca/">
      <upload xmlns="">
        <content>
          <xop:Include href="cid:http%3A%2F%2Ftempuri.org%2F1%2F635167396385870396" xmlns:xop="http://www.w3.org/2004/08/xop/include"/>
        </content>
        <description>C:\CL\1\HI155614.018</description>
        <resourceType>CL</resourceType>
      </upload>
    </upload>
  </s:Body>
</s:Envelope>

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

哇...

解决的办法是根据这篇文章工作:

Yaron Naveh的12种常见WCF互操作性混淆

2013年12月18日。Yaron还发布了:这篇文章,解释了安大略省卫生和长期护理Web服务部的详细信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有WS-Security的WCF客户端

来自分类Dev

具有WS-Security,签名标头,身份验证令牌和主体加密的WCF Web服务客户端

来自分类Dev

使用客户端证书签名XMLDsig,WS-Security或XADES配置WCF

来自分类Dev

具有WCF BadContextToken的PHP Soap客户端

来自分类Dev

使用wsHttpBinding和带有客户端凭据类型窗口的Message Security进行WCF负载平衡

来自分类Dev

使用WS安全性的Axis2 / Rampart Web服务的WCF客户端,无需客户端证书

来自分类Dev

MassTransit是否具有客户端/服务可以使用的WCF接口?

来自分类Dev

WCF-具有Microsoft .NET客户端的Mono服务器

来自分类Dev

具有.NET 4.5基于任务的异步操作的WCF服务客户端,等待永不返回

来自分类Dev

具有消息安全性的WCF / basicHttp可与Java客户端互操作吗?

来自分类Dev

MassTransit是否具有客户端/服务可以使用的WCF接口?

来自分类Dev

WCF所有客户端都使用web.config值,而不管客户端提供的设置如何

来自分类Dev

WCF所有客户端都使用web.config值,而与客户端提供的设置无关

来自分类Dev

Spring Security中具有密码授予权限的oAuth2客户端

来自分类Dev

cxf ws-security客户端未绑定配置文件

来自分类Dev

具有客户端证书和“已超过最大数组长度配额(16384)的WCF”

来自分类Dev

具有相互身份验证证书的WCF Web服务无法进行客户端链信任验证

来自分类Dev

持有WCF客户端的Xamarin PCL没有HttpCookieContainerBindingElement

来自分类Dev

在没有客户端或代理的情况下调用WCF服务

来自分类Dev

带有用户名令牌和客户端证书的WCF SOAP调用

来自分类Dev

如何为.NET 4.5 WCF服务添加异步支持,以免破坏现有客户端?

来自分类Dev

来自客户端的WCF端点发现;是否有可能?

来自分类Dev

生成的 WCF 客户端尝试序列化 Dynamics 365 中的私有成员

来自分类Dev

Spring WS客户端添加SoapHeader

来自分类Dev

JAX WS客户端无法认证

来自分类Dev

带有自定义提供程序的 Spring Boot + Security OAuth2.0 客户端

来自分类Dev

具有WS-Security支持的WSDL编辑器

来自分类Dev

具有SSL的CXF客户端引发SSLHandshakeException

来自分类Dev

具有滚动位置的CScrollView偏移客户端Rect

Related 相关文章

  1. 1

    具有WS-Security的WCF客户端

  2. 2

    具有WS-Security,签名标头,身份验证令牌和主体加密的WCF Web服务客户端

  3. 3

    使用客户端证书签名XMLDsig,WS-Security或XADES配置WCF

  4. 4

    具有WCF BadContextToken的PHP Soap客户端

  5. 5

    使用wsHttpBinding和带有客户端凭据类型窗口的Message Security进行WCF负载平衡

  6. 6

    使用WS安全性的Axis2 / Rampart Web服务的WCF客户端,无需客户端证书

  7. 7

    MassTransit是否具有客户端/服务可以使用的WCF接口?

  8. 8

    WCF-具有Microsoft .NET客户端的Mono服务器

  9. 9

    具有.NET 4.5基于任务的异步操作的WCF服务客户端,等待永不返回

  10. 10

    具有消息安全性的WCF / basicHttp可与Java客户端互操作吗?

  11. 11

    MassTransit是否具有客户端/服务可以使用的WCF接口?

  12. 12

    WCF所有客户端都使用web.config值,而不管客户端提供的设置如何

  13. 13

    WCF所有客户端都使用web.config值,而与客户端提供的设置无关

  14. 14

    Spring Security中具有密码授予权限的oAuth2客户端

  15. 15

    cxf ws-security客户端未绑定配置文件

  16. 16

    具有客户端证书和“已超过最大数组长度配额(16384)的WCF”

  17. 17

    具有相互身份验证证书的WCF Web服务无法进行客户端链信任验证

  18. 18

    持有WCF客户端的Xamarin PCL没有HttpCookieContainerBindingElement

  19. 19

    在没有客户端或代理的情况下调用WCF服务

  20. 20

    带有用户名令牌和客户端证书的WCF SOAP调用

  21. 21

    如何为.NET 4.5 WCF服务添加异步支持,以免破坏现有客户端?

  22. 22

    来自客户端的WCF端点发现;是否有可能?

  23. 23

    生成的 WCF 客户端尝试序列化 Dynamics 365 中的私有成员

  24. 24

    Spring WS客户端添加SoapHeader

  25. 25

    JAX WS客户端无法认证

  26. 26

    带有自定义提供程序的 Spring Boot + Security OAuth2.0 客户端

  27. 27

    具有WS-Security支持的WSDL编辑器

  28. 28

    具有SSL的CXF客户端引发SSLHandshakeException

  29. 29

    具有滚动位置的CScrollView偏移客户端Rect

热门标签

归档