Author: coheigea
Date: Wed Feb 5 10:12:44 2014
New Revision: 1564697
URL: http://svn.apache.org/r1564697
Log:
Using WSS4J's ReplayCache interface instead
Removed:
cxf/fediz/trunk/plugins/core/src/main/java/org/apache/cxf/fediz/core/EHCacheTokenReplayCache.java
cxf/fediz/trunk/plugins/core/src/main/java/org/apache/cxf/fediz/core/EHCacheUtil.java
cxf/fediz/trunk/plugins/core/src/main/java/org/apache/cxf/fediz/core/InMemoryTokenReplayCache.java
cxf/fediz/trunk/plugins/core/src/main/java/org/apache/cxf/fediz/core/TokenReplayCache.java
Modified:
cxf/fediz/trunk/plugins/core/src/main/java/org/apache/cxf/fediz/core/FederationProcessorImpl.java
cxf/fediz/trunk/plugins/core/src/main/java/org/apache/cxf/fediz/core/config/FederationContext.java
cxf/fediz/trunk/plugins/core/src/test/java/org/apache/cxf/fediz/core/config/FedizConfigurationTest.java
Modified:
cxf/fediz/trunk/plugins/core/src/main/java/org/apache/cxf/fediz/core/FederationProcessorImpl.java
URL:
http://svn.apache.org/viewvc/cxf/fediz/trunk/plugins/core/src/main/java/org/apache/cxf/fediz/core/FederationProcessorImpl.java?rev=1564697&r1=1564696&r2=1564697&view=diff
==============================================================================
---
cxf/fediz/trunk/plugins/core/src/main/java/org/apache/cxf/fediz/core/FederationProcessorImpl.java
(original)
+++
cxf/fediz/trunk/plugins/core/src/main/java/org/apache/cxf/fediz/core/FederationProcessorImpl.java
Wed Feb 5 10:12:44 2014
@@ -220,7 +220,7 @@ public class FederationProcessorImpl imp
&& config.isDetectReplayedTokens()) {
// Check whether token has already been processed once, prevent
// replay attack
- if
(config.getTokenReplayCache().getId(validatorResponse.getUniqueTokenId()) ==
null) {
+ if
(!config.getTokenReplayCache().contains(validatorResponse.getUniqueTokenId())) {
// not cached
Date expires = null;
if (lifeTime != null && lifeTime.getExpires() != null) {
@@ -231,9 +231,9 @@ public class FederationProcessorImpl imp
if (expires != null) {
Date currentTime = new Date();
long ttl = expires.getTime() - currentTime.getTime();
-
config.getTokenReplayCache().putId(validatorResponse.getUniqueTokenId(), ttl /
1000L);
+
config.getTokenReplayCache().add(validatorResponse.getUniqueTokenId(), ttl /
1000L);
} else {
-
config.getTokenReplayCache().putId(validatorResponse.getUniqueTokenId());
+
config.getTokenReplayCache().add(validatorResponse.getUniqueTokenId());
}
} else {
LOG.error("Replay attack with token id: " +
validatorResponse.getUniqueTokenId());
Modified:
cxf/fediz/trunk/plugins/core/src/main/java/org/apache/cxf/fediz/core/config/FederationContext.java
URL:
http://svn.apache.org/viewvc/cxf/fediz/trunk/plugins/core/src/main/java/org/apache/cxf/fediz/core/config/FederationContext.java?rev=1564697&r1=1564696&r2=1564697&view=diff
==============================================================================
---
cxf/fediz/trunk/plugins/core/src/main/java/org/apache/cxf/fediz/core/config/FederationContext.java
(original)
+++
cxf/fediz/trunk/plugins/core/src/main/java/org/apache/cxf/fediz/core/config/FederationContext.java
Wed Feb 5 10:12:44 2014
@@ -32,8 +32,6 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
-import org.apache.cxf.fediz.core.EHCacheTokenReplayCache;
-import org.apache.cxf.fediz.core.TokenReplayCache;
import org.apache.cxf.fediz.core.config.jaxb.CertificateStores;
import org.apache.cxf.fediz.core.config.jaxb.ContextConfig;
import org.apache.cxf.fediz.core.config.jaxb.FederationProtocolType;
@@ -44,6 +42,8 @@ import org.apache.cxf.fediz.core.config.
import org.apache.cxf.fediz.core.config.jaxb.TrustedIssuerType;
import org.apache.cxf.fediz.core.config.jaxb.TrustedIssuers;
import org.apache.cxf.fediz.core.exception.IllegalConfigurationException;
+import org.apache.wss4j.common.cache.ReplayCache;
+import org.apache.wss4j.common.cache.ReplayCacheFactory;
import org.apache.wss4j.common.crypto.CertificateStore;
import org.apache.wss4j.common.crypto.Crypto;
import org.apache.wss4j.common.crypto.CryptoFactory;
@@ -64,7 +64,7 @@ public class FederationContext implement
private boolean detectExpiredTokens = true;
private boolean detectReplayedTokens = true;
private String relativePath;
- private TokenReplayCache<String> replayCache;
+ private ReplayCache replayCache;
private FederationProtocol protocol;
private List<TrustManager> certificateStores;
private KeyManager keyManager;
@@ -198,25 +198,25 @@ public class FederationContext implement
}
- @SuppressWarnings("unchecked")
- public TokenReplayCache<String> getTokenReplayCache() {
+ public ReplayCache getTokenReplayCache() {
if (replayCache != null) {
return replayCache;
}
String replayCacheString = config.getTokenReplayCache();
String cacheKey = CACHE_KEY_PREFIX + "-" + config.getName();
+ ReplayCacheFactory replayCacheFactory =
ReplayCacheFactory.newInstance();
if (replayCacheString == null || "".equals(replayCacheString)) {
- replayCache = new EHCacheTokenReplayCache(cacheKey);
+ replayCache = replayCacheFactory.newReplayCache(cacheKey,
"fediz-ehcache.xml");
} else {
try {
Class<?> replayCacheClass =
Loader.loadClass(replayCacheString);
- replayCache = (TokenReplayCache<String>)
replayCacheClass.newInstance();
+ replayCache = (ReplayCache) replayCacheClass.newInstance();
} catch (ClassNotFoundException e) {
- replayCache = new EHCacheTokenReplayCache(cacheKey);
+ replayCache = replayCacheFactory.newReplayCache(cacheKey,
"fediz-ehcache.xml");
} catch (InstantiationException e) {
- replayCache = new EHCacheTokenReplayCache(cacheKey);
+ replayCache = replayCacheFactory.newReplayCache(cacheKey,
"fediz-ehcache.xml");
} catch (IllegalAccessException e) {
- replayCache = new EHCacheTokenReplayCache(cacheKey);
+ replayCache = replayCacheFactory.newReplayCache(cacheKey,
"fediz-ehcache.xml");
}
}
return replayCache;
Modified:
cxf/fediz/trunk/plugins/core/src/test/java/org/apache/cxf/fediz/core/config/FedizConfigurationTest.java
URL:
http://svn.apache.org/viewvc/cxf/fediz/trunk/plugins/core/src/test/java/org/apache/cxf/fediz/core/config/FedizConfigurationTest.java?rev=1564697&r1=1564696&r2=1564697&view=diff
==============================================================================
---
cxf/fediz/trunk/plugins/core/src/test/java/org/apache/cxf/fediz/core/config/FedizConfigurationTest.java
(original)
+++
cxf/fediz/trunk/plugins/core/src/test/java/org/apache/cxf/fediz/core/config/FedizConfigurationTest.java
Wed Feb 5 10:12:44 2014
@@ -29,9 +29,6 @@ import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import org.apache.cxf.fediz.common.SecurityTestUtil;
-import org.apache.cxf.fediz.core.EHCacheTokenReplayCache;
-import org.apache.cxf.fediz.core.InMemoryTokenReplayCache;
-import org.apache.cxf.fediz.core.TokenReplayCache;
import org.apache.cxf.fediz.core.config.jaxb.ArgumentType;
import org.apache.cxf.fediz.core.config.jaxb.AudienceUris;
import org.apache.cxf.fediz.core.config.jaxb.CallbackType;
@@ -46,6 +43,9 @@ import org.apache.cxf.fediz.core.config.
import org.apache.cxf.fediz.core.config.jaxb.TrustedIssuerType;
import org.apache.cxf.fediz.core.config.jaxb.TrustedIssuers;
import org.apache.cxf.fediz.core.config.jaxb.ValidationType;
+import org.apache.wss4j.common.cache.EHCacheReplayCache;
+import org.apache.wss4j.common.cache.MemoryReplayCache;
+import org.apache.wss4j.common.cache.ReplayCache;
import org.junit.AfterClass;
import org.junit.Assert;
@@ -275,27 +275,27 @@ public class FedizConfigurationTest {
FedizConfig config = createConfiguration();
// Test the default TokenReplayCache
- TokenReplayCache<String> defaultReplayCache =
parseConfigAndReturnTokenReplayCache(config);
+ ReplayCache defaultReplayCache =
parseConfigAndReturnTokenReplayCache(config);
Assert.assertNotNull(defaultReplayCache);
- Assert.assertTrue(defaultReplayCache instanceof
EHCacheTokenReplayCache);
+ Assert.assertTrue(defaultReplayCache instanceof EHCacheReplayCache);
// Now test setting another TokenReplayCache
ContextConfig contextConfig = config.getContextConfig().get(0);
-
contextConfig.setTokenReplayCache("org.apache.cxf.fediz.core.InMemoryTokenReplayCache");
+
contextConfig.setTokenReplayCache("org.apache.wss4j.common.cache.MemoryReplayCache");
- TokenReplayCache<String> newReplayCache =
parseConfigAndReturnTokenReplayCache(config);
+ ReplayCache newReplayCache =
parseConfigAndReturnTokenReplayCache(config);
Assert.assertNotNull(newReplayCache);
- Assert.assertTrue(newReplayCache instanceof InMemoryTokenReplayCache);
+ Assert.assertTrue(newReplayCache instanceof MemoryReplayCache);
// Now test setting another TokenReplayCache
-
contextConfig.setTokenReplayCache("org.apache.cxf.fediz.core.EHCacheTokenReplayCache");
+
contextConfig.setTokenReplayCache("org.apache.wss4j.common.cache.EHCacheReplayCache");
newReplayCache = parseConfigAndReturnTokenReplayCache(config);
Assert.assertNotNull(newReplayCache);
- Assert.assertTrue(newReplayCache instanceof EHCacheTokenReplayCache);
+ Assert.assertTrue(newReplayCache instanceof EHCacheReplayCache);
}
- private TokenReplayCache<String>
parseConfigAndReturnTokenReplayCache(FedizConfig config)
+ private ReplayCache parseConfigAndReturnTokenReplayCache(FedizConfig
config)
throws JAXBException {
final JAXBContext jaxbContext =
JAXBContext.newInstance(FedizConfig.class);