在MVC C#中生成SOAP标头

时间:2017-09-07 07:08:24

标签: c# security model-view-controller soap wsse

我在项目中添加了服务参考。

我需要传递安全标头,如下所示

<soapenv:Header>
  <oas:Security>
      <oas:UsernameToken>
        <oas:Username>username</oas:Username>
        <oas:Password>!password</oas:Password>
     </oas:UsernameToken>
  </oas:Security>

我该如何设置。如果你看一下我如何设置请求,是否可以以某种方式对标题做同样的事情。

安全性xsds嵌入在WSDL中。

http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd

http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd

对服务操作的请求按以下方式填充:

MyWebService.PortTypeClient client = new MyWebService.PortTypeClient();

MyWebService.SecurityHeaderType secHeader = new MyWebService.SecurityHeaderType();    

RetrieveOperationRequest detailsRequest = new RetrieveOperationRequest ();
detailsRequest.inputParam1 = "1234";

var result = client.RetrieveOperation(secHeader, detailsRequest);

如何生成标题部分???

您可以看到我传递安全标头,因为Web服务需要这样做。

感谢。

1 个答案:

答案 0 :(得分:1)

我设法找到解决方案/解决方法。

这是在Web.config文件中设置的。

 <client>
  <endpoint address="http://localhost:6478/service/1.0"
    binding="basicHttpBinding" bindingConfiguration="ServiceEndpointBinding"
    contract="TestService.PortType" name="ServiceEndpoint">
    <headers>
      <ns2:Security xmlns:ns2="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
        xmlns:ns1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
        <ns2:UsernameToken>
          <ns2:Username>username</ns2:Username>
          <ns2:Password>!password</ns2:Password>
        </ns2:UsernameToken>
      </ns2:Security>
    </headers>
  </endpoint>
</client>

不幸的是,我找不到这个解决方案的来源了。我刚刚解决这个问题。