You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by co...@apache.org on 2011/03/08 15:05:43 UTC
svn commit: r1079361 - in
/webservices/wss4j/trunk/src/main/java/org/apache/ws/security: message/
message/token/ processor/ util/
Author: coheigea
Date: Tue Mar 8 14:05:42 2011
New Revision: 1079361
URL: http://svn.apache.org/viewvc?rev=1079361&view=rev
Log:
[WSS-257] - Moved the SAML Assertion DOM Lookup into the CallbackLookup.
Modified:
webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/CallbackLookup.java
webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/DOMCallbackLookup.java
webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/EnvelopeIdResolver.java
webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecSignatureBase.java
webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/token/SecurityTokenReference.java
webservices/wss4j/trunk/src/main/java/org/apache/ws/security/processor/ReferenceListProcessor.java
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/message/CallbackLookup.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/CallbackLookup.java?rev=1079361&r1=1079360&r2=1079361&view=diff
==============================================================================
--- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/CallbackLookup.java (original)
+++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/CallbackLookup.java Tue Mar 8 14:05:42 2011
@@ -30,16 +30,18 @@ import org.w3c.dom.Element;
public interface CallbackLookup {
/**
- * Get the DOM element that corresponds to the given id. The Id can be a wsu:Id or else an
- * Id attribute.
+ * Get the DOM element that corresponds to the given id and ValueType reference. The Id can
+ * be a wsu:Id or else an Id attribute, or a SAML Id when the ValueType refers to a SAML
+ * Assertion.
* @param id The id of the element to locate
+ * @param valueType The ValueType attribute of the element to locate (can be null)
* @param checkMultipleElements If true then go through the entire tree and return
* null if there are multiple elements with the same Id
* @return the located element
* @throws WSSecurityException
*/
public Element getElement(
- String id, boolean checkMultipleElements
+ String id, String valueType, boolean checkMultipleElements
) throws WSSecurityException;
/**
Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/DOMCallbackLookup.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/DOMCallbackLookup.java?rev=1079361&r1=1079360&r2=1079361&view=diff
==============================================================================
--- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/DOMCallbackLookup.java (original)
+++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/DOMCallbackLookup.java Tue Mar 8 14:05:42 2011
@@ -40,19 +40,31 @@ public class DOMCallbackLookup implement
}
/**
- * Get the DOM element that corresponds to the given id. The Id can be a wsu:Id or else an
- * Id attribute.
+ * Get the DOM element that corresponds to the given id and ValueType reference. The Id can
+ * be a wsu:Id or else an Id attribute, or a SAML Id when the ValueType refers to a SAML
+ * Assertion.
* @param id The id of the element to locate
+ * @param valueType The ValueType attribute of the element to locate (can be null)
* @param checkMultipleElements If true then go through the entire tree and return
* null if there are multiple elements with the same Id
* @return the located element
* @throws WSSecurityException
*/
public Element getElement(
- String id, boolean checkMultipleElements
+ String id, String valueType, boolean checkMultipleElements
) throws WSSecurityException {
//
- // Try the SOAP Body first
+ // Try to find a SAML Assertion Element if the ValueType corresponds to a SAML Assertion
+ //
+ if (WSConstants.WSS_SAML_KI_VALUE_TYPE.equals(valueType)
+ || WSConstants.WSS_SAML2_KI_VALUE_TYPE.equals(valueType)) {
+ return
+ WSSecurityUtil.findSAMLAssertionElementById(
+ doc.getDocumentElement(), id
+ );
+ }
+ //
+ // Try the SOAP Body next
//
Element bodyElement = WSSecurityUtil.findBodyElement(doc);
if (bodyElement != null) {
Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/EnvelopeIdResolver.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/EnvelopeIdResolver.java?rev=1079361&r1=1079360&r2=1079361&view=diff
==============================================================================
--- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/EnvelopeIdResolver.java (original)
+++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/EnvelopeIdResolver.java Tue Mar 8 14:05:42 2011
@@ -96,7 +96,7 @@ public class EnvelopeIdResolver extends
callbackLookup = new DOMCallbackLookup(uri.getOwnerDocument());
}
try {
- selectedElem = callbackLookup.getElement(id, true);
+ selectedElem = callbackLookup.getElement(id, null, true);
} catch (WSSecurityException ex) {
throw new ResourceResolverException(
ex.getMessage(), new Object[]{"Id: " + id + " not found"},
Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecSignatureBase.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecSignatureBase.java?rev=1079361&r1=1079360&r2=1079361&view=diff
==============================================================================
--- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecSignatureBase.java (original)
+++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecSignatureBase.java Tue Mar 8 14:05:42 2011
@@ -116,7 +116,7 @@ public class WSSecSignatureBase extends
if (callbackLookup == null) {
callbackLookup = new DOMCallbackLookup(doc);
}
- toSignById = callbackLookup.getElement(idToSign, false);
+ toSignById = callbackLookup.getElement(idToSign, null, false);
wsDocInfo.addProtectionElement(toSignById);
}
List<String> prefixes = getInclusivePrefixes(toSignById);
Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/token/SecurityTokenReference.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/token/SecurityTokenReference.java?rev=1079361&r1=1079360&r2=1079361&view=diff
==============================================================================
--- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/token/SecurityTokenReference.java (original)
+++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/token/SecurityTokenReference.java Tue Mar 8 14:05:42 2011
@@ -267,32 +267,13 @@ public class SecurityTokenReference {
id = id.substring(1);
}
//
- // Try to find a SAML Assertion by searching the DOM tree
- //
- if (WSConstants.WSS_SAML_KI_VALUE_TYPE.equals(type)
- || WSConstants.WSS_SAML2_KI_VALUE_TYPE.equals(type)) {
- Element assertion =
- WSSecurityUtil.findSAMLAssertionElementById(
- doc.getDocumentElement(),
- id
- );
- if (assertion != null) {
- if (doDebug) {
- log.debug("SAML token ID: " + assertion.getAttribute("AssertionID"));
- }
- docInfo.addTokenElement(assertion);
- return assertion;
- }
- }
-
- //
- // Try to find the element by its (wsu) Id
+ // Delegate finding the element to the CallbackLookup instance
//
CallbackLookup callbackLookup = docInfo.getCallbackLookup();
if (callbackLookup == null) {
callbackLookup = new DOMCallbackLookup(doc);
}
- return callbackLookup.getElement(uri, true);
+ return callbackLookup.getElement(uri, type, true);
}
/**
Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/processor/ReferenceListProcessor.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/processor/ReferenceListProcessor.java?rev=1079361&r1=1079360&r2=1079361&view=diff
==============================================================================
--- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/processor/ReferenceListProcessor.java (original)
+++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/processor/ReferenceListProcessor.java Tue Mar 8 14:05:42 2011
@@ -256,7 +256,7 @@ public class ReferenceListProcessor impl
callbackLookup = new DOMCallbackLookup(doc);
}
Element encryptedDataElement =
- callbackLookup.getElement(dataRefURI, true);
+ callbackLookup.getElement(dataRefURI, null, true);
if (encryptedDataElement == null) {
throw new WSSecurityException(
WSSecurityException.INVALID_SECURITY, "dataRef", new Object[] {dataRefURI}
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=1079361&r1=1079360&r2=1079361&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 Tue Mar 8 14:05:42 2011
@@ -485,7 +485,7 @@ public class SignatureProcessor implemen
if (callbackLookup == null) {
callbackLookup = new DOMCallbackLookup(doc);
}
- se = callbackLookup.getElement(uri, false);
+ se = callbackLookup.getElement(uri, null, false);
}
if (se == null) {
throw new WSSecurityException(WSSecurityException.FAILED_CHECK);
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=1079361&r1=1079360&r2=1079361&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 Tue Mar 8 14:05:42 2011
@@ -251,10 +251,10 @@ public class WSSecurityUtil {
return Collections.singletonList(part.getElement());
}
- // Next try to find the SOAP body
+ // Next try to find the Element via its wsu:Id
String id = part.getId();
if (id != null) {
- Element foundElement = callbackLookup.getElement(id, false);
+ Element foundElement = callbackLookup.getElement(id, null, false);
return Collections.singletonList(foundElement);
}
// Otherwise just lookup all elements with the localname/namespace