FEDIZ-170 - Load keystore/truststore resources in the container plugins
diff --git a/plugins/core/src/main/java/org/apache/cxf/fediz/core/config/FedizContext.java b/plugins/core/src/main/java/org/apache/cxf/fediz/core/config/FedizContext.java
index 3ec3c99..d9ff3de 100644
--- a/plugins/core/src/main/java/org/apache/cxf/fediz/core/config/FedizContext.java
+++ b/plugins/core/src/main/java/org/apache/cxf/fediz/core/config/FedizContext.java
@@ -23,6 +23,7 @@
import java.io.File;
import java.io.IOException;
import java.math.BigInteger;
+import java.net.URL;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
@@ -286,11 +287,16 @@
private Properties createCryptoProperties(TrustManagersType tm) {
String trustStoreFile = null;
- String trustStorePw = null;
KeyStoreType ks = tm.getKeyStore();
+ String trustStorePw = ks.getPassword();
if (ks.getFile() != null && !ks.getFile().isEmpty()) {
trustStoreFile = ks.getFile();
- trustStorePw = ks.getPassword();
+ } else if (ks.getResource() != null && !ks.getResource().isEmpty()) {
+ URL resource = Loader.getResource(ks.getResource());
+ if (resource != null) {
+ // WSS4J will re-load the resource anyway
+ trustStoreFile = ks.getResource();
+ }
} else {
throw new IllegalStateException("No certificate store configured");
}
@@ -318,12 +324,17 @@
private Properties createCryptoProperties(KeyManagersType km) {
String keyStoreFile = null;
- String keyStorePw = null;
String keyType = "jks";
KeyStoreType ks = km.getKeyStore();
+ String keyStorePw = ks.getPassword();
if (ks.getFile() != null && !ks.getFile().isEmpty()) {
keyStoreFile = ks.getFile();
- keyStorePw = ks.getPassword();
+ } else if (ks.getResource() != null && !ks.getResource().isEmpty()) {
+ URL resource = Loader.getResource(ks.getResource());
+ if (resource != null) {
+ // WSS4J will re-load the resource anyway
+ keyStoreFile = ks.getResource();
+ }
} else {
throw new IllegalStateException("No certificate store configured");
}
diff --git a/plugins/core/src/test/java/org/apache/cxf/fediz/core/federation/RequestedClaimsTest.java b/plugins/core/src/test/java/org/apache/cxf/fediz/core/federation/RequestedClaimsTest.java
index 79c836c..2a2ba45 100644
--- a/plugins/core/src/test/java/org/apache/cxf/fediz/core/federation/RequestedClaimsTest.java
+++ b/plugins/core/src/test/java/org/apache/cxf/fediz/core/federation/RequestedClaimsTest.java
@@ -137,7 +137,7 @@
KeyStoreType ks0 = new KeyStoreType();
ks0.setType("JKS");
ks0.setPassword("storepass");
- ks0.setFile("ststrust.jks");
+ ks0.setResource("ststrust.jks");
tm0.setKeyStore(ks0);
certStores.getTrustManager().add(tm0);