You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rampart-dev@ws.apache.org by na...@apache.org on 2008/04/18 07:26:10 UTC

svn commit: r649372 - in /webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart: ./ policy/builders/ policy/model/ util/

Author: nandana
Date: Thu Apr 17 22:26:07 2008
New Revision: 649372

URL: http://svn.apache.org/viewvc?rev=649372&view=rev
Log:
RAMPART-152 Applied Alexandre's patch with some changes 
* Changed the behavior to apply timestamp precision in milliseconds configuration only to relevant message (not globally)
* Included check for possible null pointer values

thanks Alexandre

Modified:
    webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java
    webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/builders/RampartConfigBuilder.java
    webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/model/RampartConfig.java
    webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/MessageOptimizer.java
    webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java

Modified: webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java?rev=649372&r1=649371&r2=649372&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java Thu Apr 17 22:26:07 2008
@@ -278,8 +278,28 @@
                 }
             }
             
-            this.config = WSSConfig.getDefaultWSConfig();
+           // Check whether RampartConfig is present 
+           if (this.policyData != null && this.policyData.getRampartConfig() != null) {
+               
+               boolean timestampPrecisionInMilliseconds = Boolean.valueOf(this.policyData
+                       .getRampartConfig().getTimestampPrecisionInMilliseconds()).booleanValue();
+               
+               // This is not the default behavior, we clone the default WSSConfig to prevent this 
+               // affecting globally 
+               if (timestampPrecisionInMilliseconds == WSSConfig.getDefaultWSConfig()
+                                                           .isPrecisionInMilliSeconds()) {
+                   this.config = WSSConfig.getDefaultWSConfig();                
+               } else {
+                   this.config = RampartUtil.getWSSConfigInstance();
+                   this.config.setPrecisionInMilliSeconds(timestampPrecisionInMilliseconds);               
+               }
+           } else {
+               this.config = WSSConfig.getDefaultWSConfig();
+           }
+            
 
+                    
+            
             this.customClassLoader = msgCtx.getAxisService().getClassLoader();
             
             if(this.sender && this.policyData != null) {

Modified: webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/builders/RampartConfigBuilder.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/builders/RampartConfigBuilder.java?rev=649372&r1=649371&r2=649372&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/builders/RampartConfigBuilder.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/builders/RampartConfigBuilder.java Thu Apr 17 22:26:07 2008
@@ -104,6 +104,12 @@
         }
 
         childElement = element.getFirstChildWithName(new QName(
+                RampartConfig.NS, RampartConfig.TS_PRECISION_IN_MS_LN));
+        if (childElement != null) {
+            rampartConfig.setTimestampPrecisionInMilliseconds(childElement.getText().trim());
+        }
+        
+        childElement = element.getFirstChildWithName(new QName(
                 RampartConfig.NS, RampartConfig.TS_TTL_LN));
         if (childElement != null) {
             rampartConfig.setTimestampTTL(childElement.getText().trim());

Modified: webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/model/RampartConfig.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/model/RampartConfig.java?rev=649372&r1=649371&r2=649372&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/model/RampartConfig.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/model/RampartConfig.java Thu Apr 17 22:26:07 2008
@@ -35,6 +35,7 @@
  *  <ramp:encryptionUser>bob</ramp:encryptionUser>
  *  <ramp:passwordCallbackClass>org.apache.axis2.security.PWCallback</ramp:passwordCallbackClass>
  *  <ramp:policyValidatorCbClass>org.apache.axis2.security.ramp:PolicyValidatorCallbackHandler</ramp:policyValidatorCbClass>
+ *  <ramp:timestampPrecisionInMilliseconds>true</timestampPrecisionInMilliseconds>
  *  <ramp:timestampTTL>300</ramp:timestampTTL>
  *  <ramp:timestampMaxSkew>0</ramp:timestampMaxSkew>
  *  <ramp:tokenStoreClass>org.apache.rahas.StorageImpl</ramp:tokenStoreClass>
@@ -59,7 +60,9 @@
  * 
  */
 public class RampartConfig implements Assertion {
-
+    
+    public static final boolean DEFAULT_TIMESTAMP_PRECISION_IN_MS = true;
+	
     public static final int DEFAULT_TIMESTAMP_TTL = 300;
 
     public static final int DEFAULT_TIMESTAMP_MAX_SKEW = 300;
@@ -90,6 +93,8 @@
     
     public final static String STS_CRYPTO_LN = "stsCrypto";
 
+    public final static String TS_PRECISION_IN_MS_LN = "timestampPrecisionInMilliseconds";
+    
     public final static String TS_TTL_LN = "timestampTTL";
 
     public final static String TS_MAX_SKEW_LN = "timestampMaxSkew";
@@ -120,6 +125,8 @@
     
     private CryptoConfig stsCryptoConfig;
 
+    private String timestampPrecisionInMilliseconds = Boolean.toString(DEFAULT_TIMESTAMP_PRECISION_IN_MS);
+    
     private String timestampTTL = Integer.toString(DEFAULT_TIMESTAMP_TTL);
     
     private String timestampMaxSkew = Integer.toString(DEFAULT_TIMESTAMP_MAX_SKEW);
@@ -279,6 +286,12 @@
             writer.writeEndElement();
         }
         
+        if (getTimestampPrecisionInMilliseconds() != null) {
+            writer.writeStartElement(NS, TS_PRECISION_IN_MS_LN);
+            writer.writeCharacters(getTimestampPrecisionInMilliseconds());
+            writer.writeEndElement();
+        }
+        
         if (getTimestampTTL() != null) {
             writer.writeStartElement(NS, TS_TTL_LN);
             writer.writeCharacters(getTimestampTTL());
@@ -334,6 +347,14 @@
         return Constants.TYPE_ASSERTION;
     }
 
+    public String getTimestampPrecisionInMilliseconds() {
+    	return timestampPrecisionInMilliseconds;
+    }
+    
+    public void setTimestampPrecisionInMilliseconds(String timestampPrecisionInMilliseconds) {
+        this.timestampPrecisionInMilliseconds = timestampPrecisionInMilliseconds;
+    }
+    
     /**
      * @return Returns the timestampTTL.
      */

Modified: webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/MessageOptimizer.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/MessageOptimizer.java?rev=649372&r1=649371&r2=649372&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/MessageOptimizer.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/MessageOptimizer.java Thu Apr 17 22:26:07 2008
@@ -98,7 +98,6 @@
 			while (cipherValueElements.hasNext()) {
 				OMElement element = (OMElement) cipherValueElements.next();
 				OMText text = (OMText)element.getFirstOMChild();
-				System.out.println(text.getText().length());
 				text.setOptimize(true);
 			}
 		}

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=649372&r1=649371&r2=649372&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 Thu Apr 17 22:26:07 2008
@@ -64,6 +64,7 @@
 import org.apache.ws.security.WSConstants;
 import org.apache.ws.security.WSEncryptionPart;
 import org.apache.ws.security.WSPasswordCallback;
+import org.apache.ws.security.WSSConfig;
 import org.apache.ws.security.WSSecurityEngineResult;
 import org.apache.ws.security.WSSecurityException;
 import org.apache.ws.security.WSUsernameTokenPrincipal;
@@ -1454,6 +1455,25 @@
         }
         
         return null;
+    }
+    
+    /**
+     * We use this method to prevent the singleton behavior of WSSConfig
+     * @return WSSConfig object with the latest settings.    
+     */
+    
+    public static WSSConfig getWSSConfigInstance() {
+        
+        WSSConfig defaultWssConfig = WSSConfig.getDefaultWSConfig();
+        WSSConfig wssConfig = WSSConfig.getNewInstance();
+        
+        wssConfig.setEnableSignatureConfirmation(defaultWssConfig.isEnableSignatureConfirmation());
+        wssConfig.setTimeStampStrict(defaultWssConfig.isTimeStampStrict());
+        wssConfig.setWsiBSPCompliant(defaultWssConfig.isWsiBSPCompliant());
+        wssConfig.setPrecisionInMilliSeconds(defaultWssConfig.isPrecisionInMilliSeconds());
+        
+        return  wssConfig;
+       
     }
 
 }