使用SOAP标头从ASP.NET将凭据传递给Peoplesoft Web服务

时间:2013-05-29 12:45:16

标签: asp.net web-services peoplesoft

我已经浏览了整个网络,无法找到解决方案。我正在开发一个需要使用PeopleSoft Web服务的ASP.NET应用程序。在将安全性应用于服务之前,它工作正常。它不是.NET服务,因此我不能以典型的.NET方式传递凭证,因为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#传递凭据?

1 个答案:

答案 0 :(得分: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#中完成工作