You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ff...@apache.org on 2017/06/21 02:45:54 UTC
cxf git commit: [CXF-7411]ensure all tests passed with java9 EA
kit(9-ea+174)
Repository: cxf
Updated Branches:
refs/heads/master 88d03f562 -> b9191338f
[CXF-7411]ensure all tests passed with java9 EA kit(9-ea+174)
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/b9191338
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/b9191338
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/b9191338
Branch: refs/heads/master
Commit: b9191338ff4c00d36251adc352677212b0d6d7d0
Parents: 88d03f5
Author: Freeman Fang <fr...@gmail.com>
Authored: Wed Jun 21 10:45:41 2017 +0800
Committer: Freeman Fang <fr...@gmail.com>
Committed: Wed Jun 21 10:45:41 2017 +0800
----------------------------------------------------------------------
.../ws/security/wss4j/WSS4JInInterceptor.java | 37 ++++++++++++++++++--
1 file changed, 35 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/b9191338/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/WSS4JInInterceptor.java
----------------------------------------------------------------------
diff --git a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/WSS4JInInterceptor.java b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/WSS4JInInterceptor.java
index 471a885..1d1c27f 100644
--- a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/WSS4JInInterceptor.java
+++ b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/WSS4JInInterceptor.java
@@ -66,6 +66,7 @@ import org.apache.wss4j.common.crypto.Crypto;
import org.apache.wss4j.common.crypto.ThreadLocalSecurityProvider;
import org.apache.wss4j.common.ext.WSSecurityException;
import org.apache.wss4j.dom.WSConstants;
+import org.apache.wss4j.dom.WSDataRef;
import org.apache.wss4j.dom.engine.WSSConfig;
import org.apache.wss4j.dom.engine.WSSecurityEngine;
import org.apache.wss4j.dom.engine.WSSecurityEngineResult;
@@ -279,7 +280,7 @@ public class WSS4JInInterceptor extends AbstractWSS4JInterceptor {
originalNode = elem.cloneNode(true);
}
WSHandlerResult wsResult = engine.processSecurityHeader(elem, reqData);
- importNewDomToSAAJ(doc, elem, originalNode);
+ importNewDomToSAAJ(doc, elem, originalNode, wsResult);
Element header = SAAJUtils.getHeader(doc);
Element body = SAAJUtils.getBody(doc);
header = (Element)DOMUtils.getDomElement(header);
@@ -343,7 +344,8 @@ public class WSS4JInInterceptor extends AbstractWSS4JInterceptor {
reqData = null;
}
}
- private void importNewDomToSAAJ(SOAPMessage doc, Element elem, Node originalNode) throws SOAPException {
+ private void importNewDomToSAAJ(SOAPMessage doc, Element elem,
+ Node originalNode, WSHandlerResult wsResult) throws SOAPException {
if (DOMUtils.isJava9SAAJ()
&& originalNode != null && !originalNode.isEqualNode(elem)) {
//ensure the new decrypted dom element could be imported into the SAAJ
@@ -372,8 +374,39 @@ public class WSS4JInInterceptor extends AbstractWSS4JInterceptor {
}
elem.getOwnerDocument().getDocumentElement().getFirstChild().
getNextSibling().replaceChild(newNode, node);
+ List<WSSecurityEngineResult> encryptResults = wsResult.getActionResults().get(WSConstants.ENCR);
+ if (encryptResults != null) {
+ for (WSSecurityEngineResult result : wsResult.getActionResults().get(WSConstants.ENCR)) {
+ for (WSDataRef dataRef
+ : (List<WSDataRef>)result.get(WSSecurityEngineResult.TAG_DATA_REF_URIS)) {
+ if (dataRef.getProtectedElement() == node) {
+ dataRef.setProtectedElement((Element)newNode);
+ }
+ }
+ }
+ }
+
+ List<WSSecurityEngineResult> signedResults = new ArrayList<>();
+ if (wsResult.getActionResults().containsKey(WSConstants.SIGN)) {
+ signedResults.addAll(wsResult.getActionResults().get(WSConstants.SIGN));
+ }
+ if (wsResult.getActionResults().containsKey(WSConstants.UT_SIGN)) {
+ signedResults.addAll(wsResult.getActionResults().get(WSConstants.UT_SIGN));
+ }
+ if (wsResult.getActionResults().containsKey(WSConstants.ST_SIGNED)) {
+ signedResults.addAll(wsResult.getActionResults().get(WSConstants.ST_SIGNED));
+ }
+ for (WSSecurityEngineResult result : signedResults) {
+ for (WSDataRef dataRef
+ : (List<WSDataRef>)result.get(WSSecurityEngineResult.TAG_DATA_REF_URIS)) {
+ if (dataRef.getProtectedElement() == node) {
+ dataRef.setProtectedElement((Element)newNode);
+ }
+ }
+ }
} catch (Exception ex) {
//just to the best try
+ LOG.log(Level.FINE, "Something wrong during importNewDomToSAAJ", ex);
}
}