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;
+
}
}