Author: nandana
Date: Mon Feb 11 23:19:35 2008
New Revision: 620716
URL: http://svn.apache.org/viewvc?rev=620716&view=rev
Log:
rampart-policy related changes to support WS Security Policy 1.2
Modified:
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/META-INF/services/org.apache.neethi.builders.AssertionBuilder
Modified:
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
URL:
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java?rev=620716&r1=620715&r2=620716&view=diff
==============================================================================
---
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
(original)
+++
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
Mon Feb 11 23:19:35 2008
@@ -648,7 +648,8 @@
public static Vector getEncryptedParts(RampartMessageData rmd) {
RampartPolicyData rpd = rmd.getPolicyData();
SOAPEnvelope envelope = rmd.getMsgContext().getEnvelope();
- return getPartsAndElements(false, envelope, rpd.isEncryptBody(),
rpd.getEncryptedParts(),
rpd.getEncryptedElements(),rpd.getDeclaredNamespaces());
+ Vector encryptedPartsElements = getPartsAndElements(false, envelope,
rpd.isEncryptBody(), rpd.getEncryptedParts(),
rpd.getEncryptedElements(),rpd.getDeclaredNamespaces());
+ return getContentEncryptedElements(encryptedPartsElements, envelope,
rpd.getContentEncryptedElements(), rpd.getDeclaredNamespaces());
}
public static Vector getSignedParts(RampartMessageData rmd) {
@@ -717,6 +718,47 @@
}
+ public static Vector getContentEncryptedElements (Vector
encryptedPartsElements, SOAPEnvelope envelope,Vector elements, HashMap
decNamespaces ) {
+
+ Set namespaces = findAllPrefixNamespaces(envelope, decNamespaces);
+
+ Iterator elementsIter = elements.iterator();
+ while (elementsIter.hasNext())
+ {
+ String expression = (String)elementsIter.next();
+ try {
+ XPath xp = new AXIOMXPath(expression);
+ Iterator nsIter = namespaces.iterator();
+
+ while (nsIter.hasNext())
+ {
+ OMNamespace tmpNs =
(OMNamespace)nsIter.next();
+ xp.addNamespace(tmpNs.getPrefix(),
tmpNs.getNamespaceURI());
+ }
+
+ List selectedNodes = xp.selectNodes(envelope);
+
+ Iterator nodesIter = selectedNodes.iterator();
+
+ while (nodesIter.hasNext())
+ {
+ OMElement e = (OMElement)nodesIter.next();
+
+ encryptedPartsElements.add(new
WSEncryptionPart(e.getLocalName(), e.getNamespace().getNamespaceURI(),
"Content"));
+
+ }
+
+ } catch (JaxenException e) {
+ // This has to be changed to propagate an
instance of a RampartException up
+ throw new RuntimeException(e);
+ }
+ }
+
+
+ return encryptedPartsElements;
+
+ }
+
public static Vector getPartsAndElements(boolean sign, SOAPEnvelope
envelope, boolean includeBody, Vector parts, Vector elements, HashMap
decNamespaces) {
Vector found = new Vector();
@@ -1163,11 +1205,10 @@
/**
* Method to check whether security header is required in incoming message
- * @param rmd
+ * @param rpd
* @return true if a security header is required in the incoming message
*/
- public static boolean isSecHeaderRequired(RampartMessageData rmd) {
- RampartPolicyData rpd = rmd.getPolicyData();
+ public static boolean isSecHeaderRequired(RampartPolicyData rpd, boolean
initiator ) {
// Checking for time stamp
if ( rpd.isIncludeTimestamp() ) {
@@ -1189,7 +1230,7 @@
// Checking for supporting tokens
SupportingToken supportingTokens;
- if (!rmd.isInitiator()) {
+ if (!initiator) {
supportingTokens = rpd.getSupportingTokens();
if (supportingTokens != null &&
supportingTokens.getTokens().size() != 0) {
Modified:
webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/META-INF/services/org.apache.neethi.builders.AssertionBuilder
URL:
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/META-INF/services/org.apache.neethi.builders.AssertionBuilder?rev=620716&r1=620715&r2=620716&view=diff
==============================================================================
---
webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/META-INF/services/org.apache.neethi.builders.AssertionBuilder
(original)
+++
webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/META-INF/services/org.apache.neethi.builders.AssertionBuilder
Mon Feb 11 23:19:35 2008
@@ -46,4 +46,5 @@
org.apache.ws.secpolicy12.builders.SecureConversationTokenBuilder
org.apache.ws.secpolicy12.builders.SymmetricBindingBuilder
org.apache.ws.secpolicy12.builders.IssuedTokenBuilder
-org.apache.ws.secpolicy12.builders.RequiredElementsBuilder
\ No newline at end of file
+org.apache.ws.secpolicy12.builders.RequiredElementsBuilder
+org.apache.ws.secpolicy12.builders.ContentEncryptedElementsBuilder
\ No newline at end of file