aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/config/MoaSigConfig.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/config/MoaSigConfig.java')
-rw-r--r--src/main/java/at/gv/egiz/moazs/config/MoaSigConfig.java78
1 files changed, 75 insertions, 3 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/config/MoaSigConfig.java b/src/main/java/at/gv/egiz/moazs/config/MoaSigConfig.java
index e96d851..6a5eb39 100644
--- a/src/main/java/at/gv/egiz/moazs/config/MoaSigConfig.java
+++ b/src/main/java/at/gv/egiz/moazs/config/MoaSigConfig.java
@@ -2,19 +2,80 @@ package at.gv.egiz.moazs.config;
import at.gv.egiz.eid.authhandler.modules.sigverify.moasig.api.ISignatureVerificationService;
import at.gv.egiz.eid.authhandler.modules.sigverify.moasig.impl.SignatureVerificationService;
+import at.gv.egiz.moazs.msg.MoaSPSSSignatureVerifier;
+import at.gv.egiz.moazs.msg.SignatureVerifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import java.io.File;
+import java.io.FileNotFoundException;
+
+
@Configuration
public class MoaSigConfig {
+ private static final Logger log = LoggerFactory.getLogger(MoaSigConfig.class);
+
+ private static final String MOA_SPSS_CONFIG_FILE_PROPERTY = "moa.spss.server.configuration";
+ private static final String JAVAX_SSL_TRUSTSTORE_TYPE_PROPERTY = "javax.net.ssl.trustStoreType";
+ private static final String JAVAX_SSL_KEYSTORE_TYPE_PROPERTY = "javax.net.ssl.keyStoreType";
+
+ private final String trustStoreType;
+ private final String keyStoreType;
private final String defaultTrustProfile;
+ private final String spssConfigFilePath;
- public MoaSigConfig(@Value("${moa.spss.server.default-trustprofile}") String defaultTrustProfile,
- @Value("${moa.spss.server.configuration}") String serverConfigUrl) {
+ public MoaSigConfig(@Value("${javax.net.ssl.trustStoreType}") String trustStoreType,
+ @Value("${javax.net.ssl.keyStoreType}") String keyStoreType,
+ @Value("${moa.spss.server.default-trustprofile}") String defaultTrustProfile,
+ @Value("${moa.spss.server.configuration}") String spssConfigFilePath) throws FileNotFoundException {
+ this.trustStoreType = trustStoreType;
+ this.keyStoreType = keyStoreType;
this.defaultTrustProfile = defaultTrustProfile;
- System.getProperties().setProperty("moa.spss.server.configuration", serverConfigUrl);
+ this.spssConfigFilePath = spssConfigFilePath;
+ fallBackToSpringEnvForMoaSPSSConfigProperty();
+ fallBackToSpringEnvForJavaxNetSSLStoreTypeProperty();
+ }
+
+ private void fallBackToSpringEnvForMoaSPSSConfigProperty() throws FileNotFoundException {
+ log.info("value of spssConfigFilePath is {}", spssConfigFilePath);
+
+ if(System.getProperty(MOA_SPSS_CONFIG_FILE_PROPERTY) == null) {
+ var realPath = determinePath(spssConfigFilePath);
+ var realFile = new File(realPath);
+
+ if(realFile.exists() && realFile.canRead()) {
+ log.info("Set system property '{}' to {}", MOA_SPSS_CONFIG_FILE_PROPERTY, realPath);
+ System.getProperties().setProperty(MOA_SPSS_CONFIG_FILE_PROPERTY, realPath);
+ } else {
+ throw new FileNotFoundException("File '" + realPath + "' does not exist or is not readable.");
+ }
+ }
+ }
+
+ private String determinePath(String abstractPath) {
+ if (new File(abstractPath).isAbsolute()) {
+ return abstractPath;
+ } else {
+ //resolve relative path as classpath resource
+ //java.lang.Class needs relative resources to start with "/"
+ return this.getClass().getResource("/" + abstractPath).getFile();
+ }
+ }
+
+ private void fallBackToSpringEnvForJavaxNetSSLStoreTypeProperty() {
+ if (System.getProperty(JAVAX_SSL_TRUSTSTORE_TYPE_PROPERTY) == null) {
+ log.info("Set system property '{}' to {}", JAVAX_SSL_TRUSTSTORE_TYPE_PROPERTY, trustStoreType);
+ System.getProperties().setProperty(JAVAX_SSL_TRUSTSTORE_TYPE_PROPERTY, trustStoreType);
+ }
+
+ if (System.getProperty(JAVAX_SSL_KEYSTORE_TYPE_PROPERTY) == null) {
+ log.info("Set system property '{}' to {}", JAVAX_SSL_KEYSTORE_TYPE_PROPERTY, keyStoreType);
+ System.getProperties().setProperty(JAVAX_SSL_KEYSTORE_TYPE_PROPERTY, keyStoreType);
+ }
}
@Bean
@@ -26,4 +87,15 @@ public class MoaSigConfig {
public ISignatureVerificationService moaSigVerifyService() {
return new SignatureVerificationService();
}
+
+ @Bean
+ public SignatureVerifier signatureVerifier(@Value("${moa.spss.is-active}") boolean isMoaSPSSActive) {
+ if (isMoaSPSSActive) {
+ log.info("Moa SPSS is active. Signatures in SOAP Messages will be verified.");
+ return new MoaSPSSSignatureVerifier(moaSigVerifyService(), defaultTrustProfile);
+ } else {
+ log.warn("Moa SPSS is not active. Signatures in SOAP Messages will not be verified.");
+ return (signedXMLdocument) -> true;
+ }
+ }
}