[ 
https://issues.apache.org/jira/browse/RAMPART-429?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17893503#comment-17893503
 ] 

Robert Lazarski commented on RAMPART-429:
-----------------------------------------

Those two issues got fixed after this Jira was created - so, I wonder if this 
fix is still needed since there was an 1.7.0 after this with those updated 
jars. 

To clear, I am talking about a Rampart 1.8.0 that is about to be released with 
a dependency of Axis2 1.8.2 with Axiom 1.4 and a subsequent Rampart 2.0.0 with 
Axis2 2.0.0 and Axiom 2.0.0. 

[~veithen] could shed any light on whether the code in question at this point 
should be: 

serializedToken = element.toStringWithConsume();

Or: 

serializedToken = element.toString();
 
Right now I am inclined to leave it as is and mark the issue as won't fix since 
best I can tell, the two referenced Jira issues fixed the problem. 


> Invoking org.apache.rahas.Token.writeExternal(ObjectOutput) breaks token 
> insertion when connecting to the serivce
> -----------------------------------------------------------------------------------------------------------------
>
>                 Key: RAMPART-429
>                 URL: https://issues.apache.org/jira/browse/RAMPART-429
>             Project: Rampart
>          Issue Type: Bug
>          Components: rampart-trust
>    Affects Versions: 1.6.2
>            Reporter: Sundeep Garla
>            Priority: Major
>
> Hello, 
> In our usecase we serialize the Rampart token into secure storage using 
> org.apache.rahas.Token.writeExternal(ObjectOutput out) before rampart handler 
> executes to inject the SAML assertion into security header. Once serialized, 
> It breaks with the following exception:
> {code:title=Error when inserting assertion into security header}
>  java.util.NoSuchElementException: End of the document reached
>                 at 
> org.apache.axiom.om.impl.llom.SwitchingWrapper.next(SwitchingWrapper.java:987)
>                 at 
> javax.xml.stream.util.StreamReaderDelegate.next(StreamReaderDelegate.java:88)
>                 at 
> org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:668)
>                 at 
> org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:214)
>                 at 
> org.apache.axiom.om.impl.dom.ParentNode.buildNext(ParentNode.java:89)
>                 at 
> org.apache.axiom.om.impl.dom.ChildNode.getNextOMSibling(ChildNode.java:103)
>                 at 
> org.apache.axiom.om.impl.dom.ChildNode.getNextSibling(ChildNode.java:113)
>                 at 
> org.apache.axiom.om.impl.dom.DocumentImpl.importNode(DocumentImpl.java:403)
>                 at 
> org.apache.rampart.util.RampartUtil.appendChildToSecHeader(RampartUtil.java:826)
>                 at 
> org.apache.rampart.util.RampartUtil.insertSiblingAfter(RampartUtil.java:834)
>                 at 
> org.apache.rampart.builder.BindingBuilder.handleSupportingTokens(BindingBuilder.java:380)
>                 at 
> org.apache.rampart.builder.TransportBindingBuilder.build(TransportBindingBuilder.java:148)
>                 at 
> org.apache.rampart.MessageBuilder.build(MessageBuilder.java:140)
>                 at 
> org.apache.rampart.handler.RampartSender.invoke(RampartSender.java:65)
>                 at org.apache.axis2.engine.Phase.invokeHandler(Phase.java:340)
>                 at org.apache.axis2.engine.Phase.invoke(Phase.java:313)
>                 at 
> org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:262)
>                 at 
> org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:427)
>                 at 
> org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406)
>                 at 
> org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
>                 at 
> org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
>                 at 
> org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:555)
>                 at 
> org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:531)
> {code}
> The above error reported in JIRA's:
> # https://issues.apache.org/jira/browse/AXIOM-439
> # https://issues.apache.org/jira/browse/RAMPART-392
> This is because of method:
> {code:title=org.apache.rahas.Token.java|borderStyle=solid}
> private String convertOMElementToString(OMElement element)
>         throws IOException {
>         String serializedToken = "";
>         if (null == element) {
>             return serializedToken;
>         }
>  try {
>             serializedToken = element.toStringWithConsume();
>         } catch (XMLStreamException e) {
>             throw new IOException("Could not serialize token OM element");
>         }
>         return serializedToken;
>     }
> {code}
> Invoking toStringWithConsume() causes the errors when RampartHandler tries to 
> access the object model to insert <Assertion> into security header. 
> I have patched the above code to invoke OMElement.toString() instead of 
> toStringWithConsume() modified source as below:
> {code:title=org.apache.rahas.Token.java|borderStyle=solid}
>     private String convertOMElementToString(OMElement element)
>         throws IOException {
>         String serializedToken = "";
>         if (null == element) {
>             return serializedToken;
>         }
>         serializedToken = element.toString();
>         return serializedToken;
>     }
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscr...@axis.apache.org
For additional commands, e-mail: java-dev-h...@axis.apache.org

Reply via email to