Skip to main content

"Message Addressing Property is not present" on client side

10 replies [Last post]
markus_franke
Offline
Joined: 2007-10-10

The WSDL of my Web service (document style) contains a UsingAddressing property, the client sends a wellformed request containing To, Action, ReplyTo, but the Web service sends a response (being expected and wellformed) without these headers.

Thus the client stack tells me:

WARNUNG: A required header representing a Message Addressing Property is not present, Problem header:{http://www.w3.org/2005/08/addressing}Action
com.sun.xml.ws.addressing.model.MapRequiredException
at com.sun.xml.ws.addressing.WsaTube.checkCardinality(WsaTube.java:222)
at com.sun.xml.ws.addressing.WsaTube.validateInboundHeaders(WsaTube.java:141)
at com.sun.xml.ws.addressing.WsaClientTube.processResponse(WsaClientTube.java:81)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:605)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:554)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:539)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:436)
at com.sun.xml.ws.client.Stub.process(Stub.java:248)
at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:135)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:109)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:118)

What is going wrong here?

Reply viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
jdg6688
Offline
Joined: 2005-11-02

Ok. Look like your STS with this WSDL is not exactly the WS-Trust based STS, right?

Is it a Provider based Web service?

Why don't you use a "trust" STS for this purpose? Any requirement that can't be meet?

Just curious.

You may try to add the attribute wsap10:Action="http://isst.fhg.de/ecr/security/eCRAdmissionTokenService/requestAdmissionTokenCollection"

in the input and output in the operation in the portType.

markus_franke
Offline
Joined: 2007-10-10

> Ok. Look like your STS with this WSDL is not exactly
> the WS-Trust based STS, right?
>
> Is it a Provider based Web service?

Yes, it is a Provider based Web service.

> Why don't you use a "trust" STS for this purpose? Any
> requirement that can't be meet?
>
> Just curious.

Sorry, I don't know what the actual reason for this architectural decision was.

> You may try to add the attribute
> wsap10:Action="http://isst.fhg.de/ecr/security/eCRAdmi
> ssionTokenService/requestAdmissionTokenCollection"
>
> in the input and output in the operation in the
> portType.

Has no effect.

jdg6688
Offline
Joined: 2005-11-02

For Privider based servcie, you need to have the annotation
@RespectBinding
@BindingType
to enable the Addressing.
where:

import javax.xml.ws.BindingType;
import javax.xml.ws.RespectBinding;

markus_franke
Offline
Joined: 2007-10-10

> For Privider based servcie, you need to have the
> annotation
> @RespectBinding
> @BindingType
> to enable the Addressing.
> where:
>
> import javax.xml.ws.BindingType;
> import javax.xml.ws.RespectBinding;

Thanks for your help, it's working now. @RespectBinding is necessary and sufficient to get it running. I got the same positive result when using @Addressing instead @RespectBinding.

Since I have one Web service that does not require this annotation (it's WSDL employs the standard WS-Trust RST / RSTR message) and another that requires it, I have willy-nilly to anaylse the structural differences between the WSDL files.

Now I can analyse the structural differences between the WSDL files

shyam_rao
Offline
Joined: 2006-05-05

Can you attach you wsdl here ?

Most probably, you might not have specified these headers "to be present" in the incoming operation level policy in the wsdl.

markus_franke
Offline
Joined: 2007-10-10

Here it is.

shyam_rao
Offline
Joined: 2006-05-05

You are trying your Trust sample with Glassfish right ? So, can you put the following properties under element in the \domains\domain1\config\domain.xml file to see the message flow on the server log :

-Dcom.sun.xml.ws.transport.http.HttpAdapter.dump=true -Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true

And can you attach server side message log to us ?

By looking into your wsdl, i have a questions :

- Do your Trust application involve more than one STS. I am asking this question, as i see you have used IssuedToken assertion in sts wsdl also.

I see your attached wsdl have EncryptedElements. Right now, it is not supported in streaming security implementation (http://blogs.sun.com/venu/entry/improved_xwss_implementation_in_wsit). But we do support it in DOM based implementation. To enable this implementation, you have to add the following assertions in your client and server policy files :

Server side policy assertion:

Client side policy assertion:

markus_franke
Offline
Joined: 2007-10-10

> You are trying your Trust sample with Glassfish right
> ?

Tomcat 5.5.23.

> And can you attach server side message log to us ?
>

Attached

> By looking into your wsdl, i have a questions :
>
> - Do your Trust application involve more than one
> STS. I am asking this question, as i see you have
> used IssuedToken assertion in sts wsdl also.
>
Yes. It is a complex scenario with a lot of SAML assertions involved. Don't ask me why this cannot be handled by using only 1 assertion.

kumarjayanti
Offline
Joined: 2003-12-10

What does the server side log say. Do you see some validation error in the server logs.

There was a bug that when the server throws a Security Validation related Fault the client see's this kind of an error instead of the real SOAPFault, but that was fixed a few days ago, so if you are using the latest builds then you should not see such a problem.

markus_franke
Offline
Joined: 2007-10-10

No, there aren't any errors in the server log, only usual FINER logging.