标签: soapheader

用于CXF Web服务的.NET客户端身份验证和SOAP凭据标头

情景

我必须使用.NET客户端访问Web服务.该服务是Apache CXF Web服务.需要用户名和密码验证.我创建了代理.我已经设置了凭证.

MyServiceReference proxy = new MyServiceReference();
proxy.Credentials = new NetworkCredential("username", "password");
string res = proxy.Method1();
Run Code Online (Sandbox Code Playgroud)

当我运行客户端时,抛出以下异常:

System.Web.Services.Protocols.SoapHeaderException: An error was discovered processing the <wsse:Security> header
Run Code Online (Sandbox Code Playgroud)

服务发布者告诉我,SOAP头中没有凭据.所以,我猜IWebProxy.Credentials不是设置身份验证的正确方法.

那么,我如何设置身份验证所需的SOAP头?

c# authentication web-services cxf soapheader

5
推荐指数
1
解决办法
2万
查看次数

如何使用wsdl生成的java对象发出soap请求时添加soap标头

我使用JAX-WS RI生成了客户端java对象.我正在尝试向Web服务发出SOAP请求.服务需要在标头中进行身份验证,如下所示:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<xsd:authHeader>
<xsd:user>username@gmail.com</xsd:user>
<xsd:password>password1</xsd:password>
</xsd:authHeader>
</soapenv:Header>
<soapenv:Body>
<ns:searchAssetsParam>
<ns:includeSubfolders>true</ns:includeSubfolders>
<ns:resultsPage>2</ns:resultsPage>
</ns:searchAssetsParam>
</soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)

生成的java对象具有调用服务,创建对象和构造头的方法.但是,我在拨打电话时设置标头时遇到问题.

这是我正在使用的代码:

IpsApiService service = new IpsApiService();
IpsApiPortType port = service.getIpsApiSoapPort();
SearchAssetsParam searchAssetsParam = buildSearchAssetsParam();
SearchAssetsReturn response = port.searchAssets(searchAssetsParam);
Run Code Online (Sandbox Code Playgroud)

buildSearchAssetsParam()构造请求对象.我创建了头对象,如下所示:

AuthHeader header = new AuthHeader();
header.setUser("username@gmail.com");
header.setPassword("password1");
Run Code Online (Sandbox Code Playgroud)

如何将此AuthHeader设置为服务请求?

谢谢,Venu

java soap web-services soap-client soapheader

5
推荐指数
1
解决办法
7万
查看次数

在SOAP Header请求中添加元素以进行身份​​验证

我需要在我的新Web服务中包含一个身份验证标头(即作为SOAP标头请求的一部分).该身份验证标头将验证userId和密码详细信息.我必须在我的Web服务中验证请求标头详细信息的内容以进行身份​​验证.如果经过身份验证,则将处理请求的SOAP主体,否则Web服务将向无效身份验证消息发送回调用该服务的客户端应用程序.

我无法理解如何创建一个Web服务,其中SOAP Header将包含一些元素(在我的例子中,身份验证元素,如userId和password).

通常,服务中公开的任何方法都将作为SOAP Body的一部分.因此混淆了如何继续在SOAP Header中添加认证元素.

请帮忙

问候,

java xml soap web-services soapheader

5
推荐指数
1
解决办法
4万
查看次数

Spring-ws SoapHeader在endpoint方法中进行访问

我们正在使用spring-ws 2.2.0开发一个契约优先的WebService.我们正在尝试使用AuthToken位于SoapHeader中的自定义标记来管理身份验证.该AuthToken结构如下:

<authToken>
    <username>USERNAME</xa:username>
    <password>PASSWORD</xa:password>
</authToken>
Run Code Online (Sandbox Code Playgroud)

我们能够在SoapHeader中生成包含指定自定义身份验证标记的WSDL模式.问题是当客户端对我们的服务器执行调用时,我们无法在Ws Endpoint实现中解组AuthToken标记(位于SoapHeader中).

使用@RequestPayload绑定方法签名中的注释(handleMethodRequest如下例所示),我们可以访问未编组的有效内容(位于SoapBody中).我们尝试使用SoapHeader内容做同样的事情而没有成功.在下面的代码示例中,我们将向您展示我们想要获得的内容:

1
@PayloadRoot(namespace = NAMESPACE_URI, localPart = "methodRequest")
@ResponsePayload
public MethodResponse handleMethodRequest(@RequestPayload MethodRequest request, @SoapHeader(value = "authToken") AuthToken authToken) { }

2
@PayloadRoot(namespace = NAMESPACE_URI, localPart = "methodRequest")
@ResponsePayload
public MethodResponse handleMethodRequest(@RequestPayload MethodRequest request, AuthToken authToken) { }

3
@PayloadRoot(namespace = NAMESPACE_URI, localPart = "methodRequest")
@ResponsePayload
public MethodResponse handleMethodRequest(@RequestPayload MethodRequest request, org.springframework.ws.soap.SoapHeader header) { }

4
@PayloadRoot(namespace = NAMESPACE_URI, localPart = "methodRequest")
@ResponsePayload
public …
Run Code Online (Sandbox Code Playgroud)

spring web-services spring-ws soapheader

4
推荐指数
1
解决办法
2257
查看次数

将SOAP标头添加到ASMX服务请求

我们获得了一组消费的ASMX服务.我们对如何实施这些服务没有发言权.我们使用wsdl.exe工具生成了许多代理,但由于某些原因我不知道,这些生成的代理没有任何方法可以包含自定义SOAP头.

基本上,我需要一种方法来将自定义标头数据添加到各种服务调用.

我知道存在SoapExtension类,但遗憾的是由于存在性能问题,我们不允许使用它.

是否有任何其他方法可以在SOAP请求中自定义/添加标头数据?

.net c# soap asmx soapheader

3
推荐指数
1
解决办法
1万
查看次数

使用 jQuery Ajax 发送肥皂信封的自定义标头

我正在尝试使用 jQuery Ajax 调用 asmx 服务。

POST /YderWS.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://scandihealth.com/iwebservices/HentKommuner"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <AuthHeader xmlns="http://scandihealth.com/iwebservices/">
      <PartnerID>string</PartnerID>
      <SubPartnerID>string</SubPartnerID>
      <SubPartnerType>string</SubPartnerType>
    </AuthHeader>
  </soap:Header>
  <soap:Body>
    <HentKommuner xmlns="http://scandihealth.com/iwebservices/" />
  </soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)

以上是我需要发送到服务的 SOAP 1.1 请求。我使用下面的调用来设置自定义肥皂头。但我的请求失败了。有人可以帮我调试下面的代码并让我知道我需要做什么吗?

var authHeader = "<PartnerID>SCTEST001</PartnerID> <SubPartnerID>001</SubPartnerID> <SubPartnerType>S</SubPartnerType>";
//Call the page method
$.ajax({
  type: "GET",
  url: servicename + "/" + functionName,
  beforeSend: function (xhr) {
    xhr.setRequestHeader('AuthHeader', authHeader);
  },
  success: successFn,
  error: errorFn
});
Run Code Online (Sandbox Code Playgroud)

编辑*如果需要其他信息来回答这个问题,请告诉我。*

.net ajax jquery asmx soapheader

3
推荐指数
1
解决办法
1万
查看次数

添加SOAP标头以进行请求

我一直在尝试向SOAP请求添加标头,如下所示

<soapenv:Header>
     <UsernameToken xmlns="http://test.com/webservices">username</UsernameToken>
     <PasswordText xmlns="http://test.com/webservices">password</PasswordText>
     <SessionType xmlns="http://test.com/webservices">None</SessionType>
</soapenv:Header>
Run Code Online (Sandbox Code Playgroud)

我发现了用于SoapHeader包含标头值的建议,但引入了另一个级别,例如

<soapenv:Header>
    <CustomHeader>
        <UsernameToken xmlns="http://test.com/webservices">username</UsernameToken>
        <PasswordText xmlns="http://test.com/webservices">password</PasswordText>
        <SessionType xmlns="http://test.com/webservices">None</SessionType>
    </CustomHeader>
</soapenv:Header>
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议我如何提出请求CustomHeader

c# wcf soap soap-client soapheader

3
推荐指数
1
解决办法
9188
查看次数

在WCF客户端中修改SOAP标头Mustunderstand属性

我正在为服务(不是WCF)编写WCF客户端。收到未处理的'mustUnderstand'标头元素的错误:{http://www.w3.org/2005/08/addressing}操作,因为请求SOAP包含标有mustunderstand ='true'的标头。我必须将其设置为false或删除整个标题。你能显示出这样做的方法吗?

这是绑定代码

var transportElement = new HttpsTransportBindingElement();
        transportElement.AuthenticationScheme = AuthenticationSchemes.Basic;

        var messegeElement = new TextMessageEncodingBindingElement();
        messegeElement.MessageVersion = MessageVersion.CreateVersion(EnvelopeVersion.Soap11);

        var binding = new CustomBinding(messegeElement, transportElement);
        return binding;
Run Code Online (Sandbox Code Playgroud)

wcf soap wcf-client soapheader

2
推荐指数
1
解决办法
6967
查看次数

wsHttpBinding对客户端上的wcf服务和Web引用不起作用

我正在使用wsHttpBindingWCF服务.

我添加了一个Web引用,我有了Web代理(它基于SoapHttpClientProtocol).

此外,我尝试使用wsdl.exewcf服务(http://zzzz/zz.svc?wsdl)生成的实际wsdl 构建代理.

当客户端调用该服务时,我收到以下错误:

The SOAP action specified on the message, '', does not match the HTTP SOAP Action, 'http://tempuri.org/Service1/Operation1'.

为什么客户端(Web代理)不能使用我的WCF服务?

我应该采取哪些措施才能使它们发挥作用?

我正在运行.NET FW 3.5和ASP.NET 2.0.

wcf soap wsdl wshttpbinding soapheader

2
推荐指数
1
解决办法
6438
查看次数

将authentification标头添加到客户端stub轴2

我基于xmlbeans构建了wsdl-client-stub.现在我卡住了使用xmlbeans添加自定义标头以进行身份​​验证,因为xmlbeans存根缺少必要的类(?)

实际上,标题应如下所示:

<SOAP-ENV:Header> 
        <ns2:verifyingToken> 
            <UserID>9</UserID>
            <Token>29438094lkjslfkjlsdkjf</Token>
        </ns2:verifyingToken>
     </SOAP-ENV:Header>
Run Code Online (Sandbox Code Playgroud)

所以我尝试在存根和ServiceClient之间进行后退:

ServiceClient sc = stub._getServiceClient();

OMFactory  omFactory     = OMAbstractFactory.getOMFactory();
        OMElement  omElement     = omFactory.createOMElement(new QName("SOAP-ENV", "Header", "ver"), null);
        OMElement  omElementVeri = omFactory.createOMElement(new QName("", "verifyingToken", ""), omElement);
        OMElement  omElementUser = omFactory.createOMElement(new QName("", "UserID", ""), omElementVeri);
                   omElementUser.setText(""+userid);

        OMElement  omElementPass   =   omFactory.createOMElement(new QName("", "Token", ""), omElementVeri);
                   omElementPass.setText(""+token);
        sc.addHeader(omElement);
Run Code Online (Sandbox Code Playgroud)

eclipse引发错误说:OMFactory类型中的方法createOMElement(String,OMNamespace)不适用于参数(QName,null) - 构造函数QName(String,String,String)未定义

有没有人有一个暗示,我应该修复,让这个工作.我非常感谢你的帮助,

亚历克斯

axis2 stub soap-client soapheader

1
推荐指数
1
解决办法
6082
查看次数

WSO2 ESB SOAP标头丢失了

我正在尝试通过ESB转发简单的Web服务调用,但Send mediator会从SOAP消息中删除所有标头.

来源讯息:

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header>
    <a:Action s:mustUnderstand="1">http://tempuri.org/TestService/SendMessage</a:Action>
    <a:MessageID>urn:uuid:51d31061-2eab-41cf-b073-3dbee322e0e1</a:MessageID>
    <a:ReplyTo>
        <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
    </a:ReplyTo>
    <a:To s:mustUnderstand="1">http://if-golubets-dn:8000/test</a:To>
</s:Header>
<s:Body>
    <SendMessage xmlns="http://tempuri.org/">
        <message>Test</message>
    </SendMessage>
</s:Body>
Run Code Online (Sandbox Code Playgroud)

发送后的消息:

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header />
<s:Body>
    <SendMessage xmlns="http://tempuri.org/">
        <message>Test</message>
    </SendMessage>
</s:Body>
Run Code Online (Sandbox Code Playgroud)

如何保留Action标头?我试过头部调解员,但它没有帮助.

wso2 soapheader wso2esb

0
推荐指数
1
解决办法
904
查看次数