Hello,
I have successful configured a webservice using WSS4J, to secure the messages I
used JAX-RPC handlers.
Now I'm trying to do the same using the WSS4JHandler, I have the following
configuration example in the server:
<handler>
<handler-name>WSS4JHandler</handler-name>
<handler-class>org.apache.ws.security.handler.WSS4JHandler</handler-class>
<init-param>
<param-name>action</param-name>
<param-value>UsernameToken</param-value>
</init-param>
<init-param>
<param-name>passwordCallbackClass</param-name>
<param-value>(my callback handler)</param-value>
</init-param>
<init-param>
<param-name>passwordType</param-name>
<param-value>PasswordDigest</param-value>
</init-param>
<init-param>
<param-name>deployment</param-name>
<param-value>server</param-value>
</init-param>
<init-param>
<param-name>user</param-name>
<param-value>server</param-value>
</init-param>
</handler>
When the client send a request, the server throws the error:
caught exception while handling request: java.lang.IllegalArgumentException:
Invalid value for actor or role
java.lang.IllegalArgumentException: Invalid value for actor or role
at
com.sun.xml.messaging.saaj.soap.impl.HeaderImpl.getHeaderElementsForActor(HeaderImpl.java:77)
at
com.sun.xml.messaging.saaj.soap.impl.HeaderImpl.examineHeaderElements(HeaderImpl.java:64)
at
org.apache.ws.security.handler.WSS4JHandler.doReceiver(WSS4JHandler.java:430)
at
org.apache.ws.security.handler.WSS4JHandler.processMessage(WSS4JHandler.java:159)
at
org.apache.ws.security.handler.WSS4JHandler.handleRequest(WSS4JHandler.java:98)
Do I have the specify the actor in security header?
When using 'processSecurityHeader()' the actor may be null, but using the
WSS4JHandler not.
Thanks,
Sérgio Patrício