Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,25 @@ public ChallengeNonceGenerator generator(ChallengeNonceStore challengeNonceStore
}

@Bean
public X509Certificate[] loadTrustedCACertificatesFromCerFiles() {
public AuthTokenValidator validator(YAMLConfig yamlConfig) {
try {
return new AuthTokenValidatorBuilder()
.withSiteOrigin(URI.create(yamlConfig.getLocalOrigin()))
.withTrustedCertificateAuthorities(loadTrustedCACertificatesFromCerFiles())
.withTrustedCertificateAuthorities(loadTrustedCACertificatesFromTrustStore(yamlConfig))
.withOcspRequestTimeout(yamlConfig.getOcspRequestTimeout())
.build();
} catch (JceException e) {
throw new RuntimeException("Error building the Web eID auth token validator.", e);
}
}

@Bean
public YAMLConfig yamlConfig() {
return new YAMLConfig();
}

private X509Certificate[] loadTrustedCACertificatesFromCerFiles() {
List<X509Certificate> caCertificates = new ArrayList<>();

try {
Expand All @@ -99,8 +117,7 @@ public X509Certificate[] loadTrustedCACertificatesFromCerFiles() {
return caCertificates.toArray(new X509Certificate[0]);
}

@Bean
public X509Certificate[] loadTrustedCACertificatesFromTrustStore() {
private X509Certificate[] loadTrustedCACertificatesFromTrustStore(YAMLConfig yamlConfig) {
List<X509Certificate> caCertificates = new ArrayList<>();

try (InputStream is = ValidationConfiguration.class.getResourceAsStream(CERTS_RESOURCE_PATH + activeProfile + "/" + TRUSTED_CERTIFICATES_JKS)) {
Expand All @@ -109,7 +126,7 @@ public X509Certificate[] loadTrustedCACertificatesFromTrustStore() {
return new X509Certificate[0];
}
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
keystore.load(is, yamlConfig().getTrustStorePassword().toCharArray());
keystore.load(is, yamlConfig.getTrustStorePassword().toCharArray());
Enumeration<String> aliases = keystore.aliases();
while (aliases.hasMoreElements()) {
String alias = aliases.nextElement();
Expand All @@ -123,22 +140,6 @@ public X509Certificate[] loadTrustedCACertificatesFromTrustStore() {
return caCertificates.toArray(new X509Certificate[0]);
}

@Bean
public AuthTokenValidator validator() {
try {
return new AuthTokenValidatorBuilder()
.withSiteOrigin(URI.create(yamlConfig().getLocalOrigin()))
.withTrustedCertificateAuthorities(loadTrustedCACertificatesFromCerFiles())
.withTrustedCertificateAuthorities(loadTrustedCACertificatesFromTrustStore())
.build();
} catch (JceException e) {
throw new RuntimeException("Error building the Web eID auth token validator.", e);
}
}

@Bean
public YAMLConfig yamlConfig() {
return new YAMLConfig();
}

}
11 changes: 11 additions & 0 deletions example/src/main/java/eu/webeid/example/config/YAMLConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@

package eu.webeid.example.config;

import java.time.Duration;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
Expand All @@ -41,6 +42,8 @@ public class YAMLConfig {
@Value("truststore-password")
private String trustStorePassword;

private Duration ocspRequestTimeout = Duration.ofSeconds(5L);

@Value("#{new Boolean('${web-eid-auth-token.validation.use-digidoc4j-prod-configuration}'.trim())}")
private Boolean useDigiDoc4jProdConfiguration;

Expand Down Expand Up @@ -75,4 +78,12 @@ public boolean getUseDigiDoc4jProdConfiguration() {
public void setUseDigiDoc4jProdConfiguration(boolean useDigiDoc4jProdConfiguration) {
this.useDigiDoc4jProdConfiguration = useDigiDoc4jProdConfiguration;
}

public Duration getOcspRequestTimeout() {
return ocspRequestTimeout;
}

public void setOcspRequestTimeout(Duration ocspRequestTimeout) {
this.ocspRequestTimeout = ocspRequestTimeout;
}
}