Author: coheigea
Date: Mon Jan 16 12:12:23 2012
New Revision: 1231969
URL: http://svn.apache.org/viewvc?rev=1231969&view=rev
Log:
Only set the found Id on the context
Modified:
webservices/wss4j/trunk/src/main/java/org/apache/ws/security/processor/SignatureProcessor.java
webservices/wss4j/trunk/src/main/java/org/apache/ws/security/util/WSSecurityUtil.java
Modified:
webservices/wss4j/trunk/src/main/java/org/apache/ws/security/processor/SignatureProcessor.java
URL:
http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/processor/SignatureProcessor.java?rev=1231969&r1=1231968&r2=1231969&view=diff
==============================================================================
---
webservices/wss4j/trunk/src/main/java/org/apache/ws/security/processor/SignatureProcessor.java
(original)
+++
webservices/wss4j/trunk/src/main/java/org/apache/ws/security/processor/SignatureProcessor.java
Mon Jan 16 12:12:23 2012
@@ -422,7 +422,7 @@ public class SignatureProcessor implemen
element = wsDocInfo.getTokenElement(uri);
}
if (element != null) {
-
WSSecurityUtil.storeElementInContext(((DOMValidateContext)context), element);
+
WSSecurityUtil.storeElementInContext(((DOMValidateContext)context), uri,
element);
}
}
}
Modified:
webservices/wss4j/trunk/src/main/java/org/apache/ws/security/util/WSSecurityUtil.java
URL:
http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/util/WSSecurityUtil.java?rev=1231969&r1=1231968&r2=1231969&view=diff
==============================================================================
---
webservices/wss4j/trunk/src/main/java/org/apache/ws/security/util/WSSecurityUtil.java
(original)
+++
webservices/wss4j/trunk/src/main/java/org/apache/ws/security/util/WSSecurityUtil.java
Mon Jan 16 12:12:23 2012
@@ -1241,14 +1241,49 @@ public class WSSecurityUtil {
/**
* Store the element argument in the DOM Crypto Context if it has one of
the standard
+ * "Id" attributes that matches the given uri
+ */
+ public static void storeElementInContext(
+ DOMCryptoContext context,
+ String uri,
+ Element element
+ ) {
+ String id = uri;
+ if (uri.charAt(0) == '#') {
+ id = id.substring(1);
+ }
+
+ if (element.hasAttributeNS(WSConstants.WSU_NS, "Id")
+ && id.equals(element.getAttributeNS(WSConstants.WSU_NS, "Id"))) {
+ context.setIdAttributeNS(element, WSConstants.WSU_NS, "Id");
+ }
+ if (element.hasAttributeNS(null, "Id")
+ && id.equals(element.getAttributeNS(null, "Id"))) {
+ context.setIdAttributeNS(element, null, "Id");
+ }
+ if (element.hasAttributeNS(null, "ID")
+ && id.equals(element.getAttributeNS(null, "ID"))) {
+ context.setIdAttributeNS(element, null, "ID");
+ }
+ if (element.hasAttributeNS(null, "AssertionID")
+ && id.equals(element.getAttributeNS(null, "AssertionID"))) {
+ context.setIdAttributeNS(element, null, "AssertionID");
+ }
+ }
+
+ /**
+ * Store the element argument in the DOM Crypto Context if it has one of
the standard
* "Id" attributes.
*/
- public static void storeElementInContext(DOMCryptoContext context, Element
element) {
+ public static void storeElementInContext(
+ DOMCryptoContext context,
+ Element element
+ ) {
if (element.hasAttributeNS(WSConstants.WSU_NS, "Id")) {
context.setIdAttributeNS(element, WSConstants.WSU_NS, "Id");
}
if (element.hasAttributeNS(null, "Id")) {
- context.setIdAttributeNS(element, null, "Id");
+ context.setIdAttributeNS(element, null, "Id");
}
if (element.hasAttributeNS(null, "ID")) {
context.setIdAttributeNS(element, null, "ID");