C#使用Java SOAP服务WSSecurity

时间:2012-12-17 16:16:47

标签: c# java soap aes ws-security

我正在尝试使用基于Java的Web服务,每次尝试连接时都会出现错误:

  

org.apache.ws.security.WSSecurityException:安全令牌可以   未经过身份验证或授权;

服务管理员说我应该发送用他发给我的AES密钥加密的密码。

到目前为止我在web.config上的内容

<client>
      <endpoint address="http://webservicer2:8088/billing/"
        binding="basicHttpBinding" bindingConfiguration="ServiceBill3"
        contract="ServiceBilling.ServiceBillingContract" name="ServiceBill3">
        <headers>
          <wsse:Security soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next"
            soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
            xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
            <wsse:UsernameToken wsu:Id="UsernameToken-1" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
              <wsse:Username>ohmygod</wsse:Username>
              <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">bbqsauce</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </headers>
      </endpoint>
    </client>

当我尝试在该服务上执行任何方法时,会发生错误。我应该修改什么来添加我的密钥? 任何人吗?

2 个答案:

答案 0 :(得分:0)

不要将BasicHTTPBinding与硬编码头一起使用。请改用WCF中的内置WS-Security支持。见http://msdn.microsoft.com/en-us/library/vstudio/ms731058(v=vs.90).aspx。另外,请查看使用服务WSDL时生成的配置。

答案 1 :(得分:0)

尝试使用wsse:Password

中的密码类型
http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest