ws-security exception/fault handling

View: New views
3 Messages — Rating Filter:   Alert me  

ws-security exception/fault handling

by Shuangxi :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I am developing an app using ws-security. On the client, I added
DOMInHandler and WSS4JInHandler for the incomming message:

    ...
    client.addInHandler(new DOMInHandler());
    client.addInHandler(new WSS4JInHandler(inProperties));

On my server, I added DomOutHandler and WSS4JOutHandler for
the outgoing message (for the encryption):

    ....
    <property name="outHandlers">
      <list>
        <ref bean="domOutHandler" />
        <ref bean="wss4jOutHandler" />
      </list>
    </property>
    ...

If the server throws an exception when handling the service call from
the client, I can see the client got the exception message:

    ...
    2006-09-05 12:16:03,093 DEBUG httpclient.wire.content - << "1"^M
    2006-09-05 12:16:03,093 DEBUG httpclient.wire.content - << "7"^M
    2006-09-05 12:16:03,093 DEBUG httpclient.wire.content - << "5"^M
    2006-09-05 12:16:03,093 DEBUG httpclient.wire.content - << "[\r]"^M
    2006-09-05 12:16:03,093 DEBUG httpclient.wire.content - << "[\n]"^M
    2006-09-05 12:16:03,093 DEBUG httpclient.wire.content - <<
"<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soap:Body><soap:Fault><faultcode
    xmlns:ns1="http://coplogic.com/authentication">ns1:INVALID_LOGIN</faultcode>
  <faultstring>Invalid username/password.</faultstring></soap:Fault></soap:Body>
  </soap:Envelope>"^M
    2006-09-05 12:16:03,171 DEBUG org.codehaus.xfire.client.Client - Received
      message to http://localhost:8080/dors/service/ReportService^

this error message goes through the client handling pipeline,
it failed when WSS4JInHandler calls WSSecurityEngine to process the
security  header:

  "WSS4JInHandler: Request does not contain required Security header"

It seems that the client's "in" handler expects all the messages from the
server to be encrypted,  but the fault message doesn't look to be enrypted.


If I add DOMOutHandler and WSS4JOutHandler to fault handlers chain like this
(spring configuration):
    ...
    <property name="faultHandlers">
      <list>
        <ref bean="domOutHandler" />
        <ref bean="wss4jOutHandler" />
      </list>
    </property>
    ...


I will get a NAMESPACE_ERR exception. Here is the stacktrace:

2006-09-06 09:52:03,015 ERROR org.codehaus.xfire.handler.DefaultFaultHandler -
    Could not send fault.^M org.w3c.dom.DOMException: NAMESPACE_ERR:
    An attempt is made to create or change
    an object in a way which is incorrect with regard to namespaces.^M
  at
  com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.checkNamespaceWF
  (CoreDocumentImpl.java:2388)^M
  at
  com.sun.org.apache.xerces.internal.dom.ElementNSImpl.setName
  (ElementNSImpl.java:143)^M
  at
  com.sun.org.apache.xerces.internal.dom.ElementNSImpl.<init>
  (ElementNSImpl.java:112)^M
  at
  com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.createElementNS
  (CoreDocumentImpl.java:1969)^M
  at
  org.apache.ws.security.util.WSSecurityUtil.createElementInSameNamespace
  (WSSecurityUtil.java:519)^M
  at
  org.apache.ws.security.util.WSSecurityUtil.findWsseSecurityHeaderBlock
  (WSSecurityUtil.java:637)^M
  at
  org.apache.ws.security.message.WSSecHeader.insertSecurityHeader
  (WSSecHeader.java:134)^M
  at
  org.apache.ws.security.handler.WSHandler.doSenderAction(WSHandler.java:98)^M
  at
  org.codehaus.xfire.security.wss4j.WSS4JOutHandler.invoke
  (WSS4JOutHandler.java:154)^M
  at
  org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:110)^M
  at
  org.codehaus.xfire.handler.DefaultFaultHandler.sendFault
  (DefaultFaultHandler.java:83)^M
  at
  org.codehaus.xfire.handler.DefaultFaultHandler.invoke
  (DefaultFaultHandler.java:46)^M
  at
  org.codehaus.xfire.transport.DefaultEndpoint.onReceive
  (DefaultEndpoint.java:71)^M
  at
  org.codehaus.xfire.transport.AbstractChannel.receive
  (AbstractChannel.java:38)^M
  at
  org.codehaus.xfire.transport.http.XFireServletController.invoke
  (XFireServletController.java:261)^M
  at
  org.codehaus.xfire.transport.http.XFireServletController.doService
  (XFireServletController.java:120)^M
  at
  org.codehaus.xfire.transport.http.XFireServlet.doPost(XFireServlet.java:116)^M
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)^M
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)^M
  at
  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
  (ApplicationFilterChain.java:252)^
  ...

  Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog^M
  at [row,col {unknown-source}]: [1,0]^M
  at
  com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:628)^M
  at
  com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:1970)^M
  at
  com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:1883)^M
  at com.ctc.wstx.sr.BasicStreamReader.next
  (BasicStreamReader.java:1026)^M
  at org.codehaus.xfire.util.STAXUtils.readDocElements(STAXUtils.java:556)^M
  at org.codehaus.xfire.util.STAXUtils.read(STAXUtils.java:405)^M
  at org.codehaus.xfire.util.dom.DOMInHandler.invoke(DOMInHandler.java:42)^M
  at
  org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:110)^M
  at org.codehaus.xfire.client.Client.onReceive(Client.java:382)^M
  ... 13 more^M


Please help.

Thanks,
shuangxi



---------------------------------------------------------------------
To unsubscribe from this list please visit:

    http://xircles.codehaus.org/manage_email


Re: ws-security exception/fault handling

by Tomek Sztelak :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

try to add DOMOutHandler and WSS4jOutHandler to service faultHandler chain.

On 9/8/06, Shuangxi <shuangxi@...> wrote:

> I am developing an app using ws-security. On the client, I added
> DOMInHandler and WSS4JInHandler for the incomming message:
>
>     ...
>     client.addInHandler(new DOMInHandler());
>     client.addInHandler(new WSS4JInHandler(inProperties));
>
> On my server, I added DomOutHandler and WSS4JOutHandler for
> the outgoing message (for the encryption):
>
>     ....
>     <property name="outHandlers">
>       <list>
>         <ref bean="domOutHandler" />
>         <ref bean="wss4jOutHandler" />
>       </list>
>     </property>
>     ...
>
> If the server throws an exception when handling the service call from
> the client, I can see the client got the exception message:
>
>     ...
>     2006-09-05 12:16:03,093 DEBUG httpclient.wire.content - << "1"^M
>     2006-09-05 12:16:03,093 DEBUG httpclient.wire.content - << "7"^M
>     2006-09-05 12:16:03,093 DEBUG httpclient.wire.content - << "5"^M
>     2006-09-05 12:16:03,093 DEBUG httpclient.wire.content - << "[\r]"^M
>     2006-09-05 12:16:03,093 DEBUG httpclient.wire.content - << "[\n]"^M
>     2006-09-05 12:16:03,093 DEBUG httpclient.wire.content - <<
> "<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
>     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>   <soap:Body><soap:Fault><faultcode
>     xmlns:ns1="http://coplogic.com/authentication">ns1:INVALID_LOGIN</faultcode>
>   <faultstring>Invalid username/password.</faultstring></soap:Fault></soap:Body>
>   </soap:Envelope>"^M
>     2006-09-05 12:16:03,171 DEBUG org.codehaus.xfire.client.Client - Received
>       message to http://localhost:8080/dors/service/ReportService^
>
> this error message goes through the client handling pipeline,
> it failed when WSS4JInHandler calls WSSecurityEngine to process the
> security  header:
>
>   "WSS4JInHandler: Request does not contain required Security header"
>
> It seems that the client's "in" handler expects all the messages from the
> server to be encrypted,  but the fault message doesn't look to be enrypted.
>
>
> If I add DOMOutHandler and WSS4JOutHandler to fault handlers chain like this
> (spring configuration):
>     ...
>     <property name="faultHandlers">
>       <list>
>         <ref bean="domOutHandler" />
>         <ref bean="wss4jOutHandler" />
>       </list>
>     </property>
>     ...
>
>
> I will get a NAMESPACE_ERR exception. Here is the stacktrace:
>
> 2006-09-06 09:52:03,015 ERROR org.codehaus.xfire.handler.DefaultFaultHandler -
>     Could not send fault.^M org.w3c.dom.DOMException: NAMESPACE_ERR:
>     An attempt is made to create or change
>     an object in a way which is incorrect with regard to namespaces.^M
>   at
>   com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.checkNamespaceWF
>   (CoreDocumentImpl.java:2388)^M
>   at
>   com.sun.org.apache.xerces.internal.dom.ElementNSImpl.setName
>   (ElementNSImpl.java:143)^M
>   at
>   com.sun.org.apache.xerces.internal.dom.ElementNSImpl.<init>
>   (ElementNSImpl.java:112)^M
>   at
>   com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.createElementNS
>   (CoreDocumentImpl.java:1969)^M
>   at
>   org.apache.ws.security.util.WSSecurityUtil.createElementInSameNamespace
>   (WSSecurityUtil.java:519)^M
>   at
>   org.apache.ws.security.util.WSSecurityUtil.findWsseSecurityHeaderBlock
>   (WSSecurityUtil.java:637)^M
>   at
>   org.apache.ws.security.message.WSSecHeader.insertSecurityHeader
>   (WSSecHeader.java:134)^M
>   at
>   org.apache.ws.security.handler.WSHandler.doSenderAction(WSHandler.java:98)^M
>   at
>   org.codehaus.xfire.security.wss4j.WSS4JOutHandler.invoke
>   (WSS4JOutHandler.java:154)^M
>   at
>   org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:110)^M
>   at
>   org.codehaus.xfire.handler.DefaultFaultHandler.sendFault
>   (DefaultFaultHandler.java:83)^M
>   at
>   org.codehaus.xfire.handler.DefaultFaultHandler.invoke
>   (DefaultFaultHandler.java:46)^M
>   at
>   org.codehaus.xfire.transport.DefaultEndpoint.onReceive
>   (DefaultEndpoint.java:71)^M
>   at
>   org.codehaus.xfire.transport.AbstractChannel.receive
>   (AbstractChannel.java:38)^M
>   at
>   org.codehaus.xfire.transport.http.XFireServletController.invoke
>   (XFireServletController.java:261)^M
>   at
>   org.codehaus.xfire.transport.http.XFireServletController.doService
>   (XFireServletController.java:120)^M
>   at
>   org.codehaus.xfire.transport.http.XFireServlet.doPost(XFireServlet.java:116)^M
>   at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)^M
>   at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)^M
>   at
>   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
>   (ApplicationFilterChain.java:252)^
>   ...
>
>   Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog^M
>   at [row,col {unknown-source}]: [1,0]^M
>   at
>   com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:628)^M
>   at
>   com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:1970)^M
>   at
>   com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:1883)^M
>   at com.ctc.wstx.sr.BasicStreamReader.next
>   (BasicStreamReader.java:1026)^M
>   at org.codehaus.xfire.util.STAXUtils.readDocElements(STAXUtils.java:556)^M
>   at org.codehaus.xfire.util.STAXUtils.read(STAXUtils.java:405)^M
>   at org.codehaus.xfire.util.dom.DOMInHandler.invoke(DOMInHandler.java:42)^M
>   at
>   org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:110)^M
>   at org.codehaus.xfire.client.Client.onReceive(Client.java:382)^M
>   ... 13 more^M
>
>
> Please help.
>
> Thanks,
> shuangxi
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe from this list please visit:
>
>     http://xircles.codehaus.org/manage_email
>
>


--
-----
When one of our products stops working, we'll blame another vendor
within 24 hours.

---------------------------------------------------------------------
To unsubscribe from this list please visit:

    http://xircles.codehaus.org/manage_email


Re: ws-security exception/fault handling

by Raf177 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I have the same problem than below. If someone has the solution, i will appreciate !

Shuangxi wrote:
I am developing an app using ws-security. On the client, I added
DOMInHandler and WSS4JInHandler for the incomming message:

    ...
    client.addInHandler(new DOMInHandler());
    client.addInHandler(new WSS4JInHandler(inProperties));

On my server, I added DomOutHandler and WSS4JOutHandler for
the outgoing message (for the encryption):

    ....
    <property name="outHandlers">
      <list>
        <ref bean="domOutHandler" />
        <ref bean="wss4jOutHandler" />
      </list>
    </property>
    ...

If the server throws an exception when handling the service call from
the client, I can see the client got the exception message:

    ...
    2006-09-05 12:16:03,093 DEBUG httpclient.wire.content - << "1"^M
    2006-09-05 12:16:03,093 DEBUG httpclient.wire.content - << "7"^M
    2006-09-05 12:16:03,093 DEBUG httpclient.wire.content - << "5"^M
    2006-09-05 12:16:03,093 DEBUG httpclient.wire.content - << "[\r]"^M
    2006-09-05 12:16:03,093 DEBUG httpclient.wire.content - << "[\n]"^M
    2006-09-05 12:16:03,093 DEBUG httpclient.wire.content - <<
"<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soap:Body><soap:Fault><faultcode
    xmlns:ns1="http://coplogic.com/authentication">ns1:INVALID_LOGIN</faultcode>
  <faultstring>Invalid username/password.</faultstring></soap:Fault></soap:Body>
  </soap:Envelope>"^M
    2006-09-05 12:16:03,171 DEBUG org.codehaus.xfire.client.Client - Received
      message to http://localhost:8080/dors/service/ReportService^

this error message goes through the client handling pipeline,
it failed when WSS4JInHandler calls WSSecurityEngine to process the
security  header:

  "WSS4JInHandler: Request does not contain required Security header"

It seems that the client's "in" handler expects all the messages from the
server to be encrypted,  but the fault message doesn't look to be enrypted.


If I add DOMOutHandler and WSS4JOutHandler to fault handlers chain like this
(spring configuration):
    ...
    <property name="faultHandlers">
      <list>
        <ref bean="domOutHandler" />
        <ref bean="wss4jOutHandler" />
      </list>
    </property>
    ...


I will get a NAMESPACE_ERR exception. Here is the stacktrace:

2006-09-06 09:52:03,015 ERROR org.codehaus.xfire.handler.DefaultFaultHandler -
    Could not send fault.^M org.w3c.dom.DOMException: NAMESPACE_ERR:
    An attempt is made to create or change
    an object in a way which is incorrect with regard to namespaces.^M
  at
  com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.checkNamespaceWF
  (CoreDocumentImpl.java:2388)^M
  at
  com.sun.org.apache.xerces.internal.dom.ElementNSImpl.setName
  (ElementNSImpl.java:143)^M
  at
  com.sun.org.apache.xerces.internal.dom.ElementNSImpl.<init>
  (ElementNSImpl.java:112)^M
  at
  com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.createElementNS
  (CoreDocumentImpl.java:1969)^M
  at
  org.apache.ws.security.util.WSSecurityUtil.createElementInSameNamespace
  (WSSecurityUtil.java:519)^M
  at
  org.apache.ws.security.util.WSSecurityUtil.findWsseSecurityHeaderBlock
  (WSSecurityUtil.java:637)^M
  at
  org.apache.ws.security.message.WSSecHeader.insertSecurityHeader
  (WSSecHeader.java:134)^M
  at
  org.apache.ws.security.handler.WSHandler.doSenderAction(WSHandler.java:98)^M
  at
  org.codehaus.xfire.security.wss4j.WSS4JOutHandler.invoke
  (WSS4JOutHandler.java:154)^M
  at
  org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:110)^M
  at
  org.codehaus.xfire.handler.DefaultFaultHandler.sendFault
  (DefaultFaultHandler.java:83)^M
  at
  org.codehaus.xfire.handler.DefaultFaultHandler.invoke
  (DefaultFaultHandler.java:46)^M
  at
  org.codehaus.xfire.transport.DefaultEndpoint.onReceive
  (DefaultEndpoint.java:71)^M
  at
  org.codehaus.xfire.transport.AbstractChannel.receive
  (AbstractChannel.java:38)^M
  at
  org.codehaus.xfire.transport.http.XFireServletController.invoke
  (XFireServletController.java:261)^M
  at
  org.codehaus.xfire.transport.http.XFireServletController.doService
  (XFireServletController.java:120)^M
  at
  org.codehaus.xfire.transport.http.XFireServlet.doPost(XFireServlet.java:116)^M
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)^M
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)^M
  at
  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
  (ApplicationFilterChain.java:252)^
  ...

  Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog^M
  at [row,col {unknown-source}]: [1,0]^M
  at
  com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:628)^M
  at
  com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:1970)^M
  at
  com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:1883)^M
  at com.ctc.wstx.sr.BasicStreamReader.next
  (BasicStreamReader.java:1026)^M
  at org.codehaus.xfire.util.STAXUtils.readDocElements(STAXUtils.java:556)^M
  at org.codehaus.xfire.util.STAXUtils.read(STAXUtils.java:405)^M
  at org.codehaus.xfire.util.dom.DOMInHandler.invoke(DOMInHandler.java:42)^M
  at
  org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:110)^M
  at org.codehaus.xfire.client.Client.onReceive(Client.java:382)^M
  ... 13 more^M


Please help.

Thanks,
shuangxi



---------------------------------------------------------------------
To unsubscribe from this list please visit:

    http://xircles.codehaus.org/manage_email