1

我浏览了整个网络,找不到解决方案。我正在开发一个需要使用 PeopleSoft Web 服务的 ASP.NET 应用程序。在他们为服务应用安全性之前,它运行良好。它不是 .NET 服务,因此我无法以典型的 .NET 方式传递凭据,即 usnig System.Net.NetworkCredential。PS 开发人员告诉我,我必须在 SOAP 标头中传递凭据。我看不到任何具体的方法可以做到这一点。以下是 PeopleSoft WSDL 的片段:

<wsdl:binding name="PROCESSREQUEST_Binding" type="tns:PROCESSREQUEST_PortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> 
- <wsdl:operation name="PRCS_FINDREQUESTS">
  <soap:operation soapAction="PRQ_FINDREQUESTS.v1" style="document" /> 
- <wsp:Policy wsu:Id="UsernameTokenSecurityPolicyPasswordRequired" xmlns:wsu="http://docs.oasis-    open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
- <wsp:ExactlyOne>
- <wsp:All>
- <wsse:SecurityToken wsp:Usage="wsp:Required" xmlns:wsse="http://docs.oasis-    open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:TokenType>wsse:UserNameToken</wsse:TokenType> 
- <Claims>
  <SubjectName MatchType="wsse:Exact" /> 
 <UsePassword wsp:Usage="wsp:Required" /> 
</Claims>
</wsse:SecurityToken>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>

我将如何使用 C# 传递凭据?

4

1 回答 1

1

这是我在测试使用 jMeter 激活用户名安全性的 Web 服务时使用的 soap 标头:

<soapenv:Header xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <wsse:Security xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soap:mustUnderstand="1">
    <wsse:UsernameToken>
      <wsse:Username>myUserName</wsse:Username>
      <wsse:Password>myPassWord</wsse:Password>
    </wsse:UsernameToken>
  </wsse:Security>
</soapenv:Header>

它应该在 C# 中完成工作

于 2013-07-23T16:02:06.790 回答