diff --git a/autoconfigure/pom.xml b/autoconfigure/pom.xml index b26ecda7..415dd81f 100644 --- a/autoconfigure/pom.xml +++ b/autoconfigure/pom.xml @@ -10,7 +10,7 @@ se.swedenconnect.spring.saml.idp spring-saml-idp-parent - 2.3.1 + 2.3.2-SNAPSHOT Sweden Connect :: Spring SAML Identity Provider :: Spring Boot Autoconfigure module @@ -106,7 +106,7 @@ org.redisson redisson-spring-boot-starter - 3.40.1 + 3.42.0 true diff --git a/autoconfigure/src/main/java/se/swedenconnect/spring/saml/idp/autoconfigure/redis/RedissonActivationAutoConfiguration.java b/autoconfigure/src/main/java/se/swedenconnect/spring/saml/idp/autoconfigure/redis/RedissonActivationAutoConfiguration.java new file mode 100644 index 00000000..099fe954 --- /dev/null +++ b/autoconfigure/src/main/java/se/swedenconnect/spring/saml/idp/autoconfigure/redis/RedissonActivationAutoConfiguration.java @@ -0,0 +1,41 @@ +/* + * Copyright 2023-2025 Sweden Connect + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package se.swedenconnect.spring.saml.idp.autoconfigure.redis; + +import org.redisson.Redisson; +import org.redisson.spring.starter.RedissonAutoConfigurationV2; +import org.redisson.spring.starter.RedissonProperties; +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; +import org.springframework.boot.autoconfigure.data.redis.RedisProperties; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.data.redis.core.RedisOperations; + +/** + * Activates Redisson if Redis is configured and Redisson is in classpath. + * + * @author Martin Lindström + */ +@AutoConfiguration +@AutoConfigureBefore(RedisAutoConfiguration.class) +@ConditionalOnProperty(prefix = "spring.data.redis", name = "host") +@ConditionalOnClass({ Redisson.class, RedisOperations.class, RedissonAutoConfigurationV2.class }) +@EnableConfigurationProperties({ RedissonProperties.class, RedisProperties.class }) +public class RedissonActivationAutoConfiguration extends RedissonAutoConfigurationV2 { +} diff --git a/autoconfigure/src/main/java/se/swedenconnect/spring/saml/idp/autoconfigure/redis/RedissonExtensionsAutoConfiguration.java b/autoconfigure/src/main/java/se/swedenconnect/spring/saml/idp/autoconfigure/redis/RedissonExtensionsAutoConfiguration.java index 7d64c4f0..8273f733 100644 --- a/autoconfigure/src/main/java/se/swedenconnect/spring/saml/idp/autoconfigure/redis/RedissonExtensionsAutoConfiguration.java +++ b/autoconfigure/src/main/java/se/swedenconnect/spring/saml/idp/autoconfigure/redis/RedissonExtensionsAutoConfiguration.java @@ -20,6 +20,7 @@ import org.redisson.config.ClusterServersConfig; import org.redisson.config.Config; import org.redisson.config.ReadMode; +import org.redisson.config.SslVerificationMode; import org.redisson.spring.starter.RedissonAutoConfigurationCustomizer; import org.redisson.spring.starter.RedissonAutoConfigurationV2; import org.springframework.boot.autoconfigure.AutoConfiguration; @@ -41,7 +42,7 @@ * * @author Martin Lindström */ -@AutoConfiguration(before = RedissonAutoConfigurationV2.class) +@AutoConfiguration(before = RedissonActivationAutoConfiguration.class) @ConditionalOnClass(RedissonAutoConfigurationV2.class) @EnableConfigurationProperties({ RedisProperties.class, RedissonClusterProperties.class, RedisTlsProperties.class }) @Import(RedisTlsExtensionsConfiguration.class) @@ -88,7 +89,8 @@ RedissonAutoConfigurationCustomizer redissonCustomizer() { return c -> { final BaseConfig config = this.getRedissonConfiguration(c); if (this.redisProperties.getSsl().isEnabled()) { - config.setSslEnableEndpointIdentification(this.redisTlsProperties.isEnableHostnameVerification()); + config.setSslVerificationMode(this.redisTlsProperties.isEnableHostnameVerification() + ? SslVerificationMode.STRICT : SslVerificationMode.NONE); final String bundle = this.redisProperties.getSsl().getBundle(); if (bundle != null) { final SslBundle sslBundle = this.sslBundles.getBundle(bundle); diff --git a/autoconfigure/src/main/java/se/swedenconnect/spring/saml/idp/autoconfigure/redis/RedissonFilter.java b/autoconfigure/src/main/java/se/swedenconnect/spring/saml/idp/autoconfigure/redis/RedissonFilter.java new file mode 100644 index 00000000..b76e4af4 --- /dev/null +++ b/autoconfigure/src/main/java/se/swedenconnect/spring/saml/idp/autoconfigure/redis/RedissonFilter.java @@ -0,0 +1,45 @@ +/* + * Copyright 2023-2025 Sweden Connect + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package se.swedenconnect.spring.saml.idp.autoconfigure.redis; + +import org.redisson.spring.starter.RedissonAutoConfigurationV2; +import org.springframework.boot.autoconfigure.AutoConfigurationImportFilter; +import org.springframework.boot.autoconfigure.AutoConfigurationMetadata; + +import java.util.Objects; + +/** + * Disables Redisson autoconfiguration. + * + * @author Martin Lindström + */ +public class RedissonFilter implements AutoConfigurationImportFilter { + + public static final String DISABLE = RedissonAutoConfigurationV2.class.getName(); + + @Override + public boolean[] match(final String[] autoConfigurationClasses, + final AutoConfigurationMetadata autoConfigurationMetadata) { + + final boolean[] matches = new boolean[autoConfigurationClasses.length]; + for (int i = 0; i < autoConfigurationClasses.length; i++) { + matches[i] = !Objects.equals(DISABLE, autoConfigurationClasses[i]); + } + + return matches; + } + +} diff --git a/autoconfigure/src/main/resources/META-INF/spring.factories b/autoconfigure/src/main/resources/META-INF/spring.factories new file mode 100644 index 00000000..f5d0c9b6 --- /dev/null +++ b/autoconfigure/src/main/resources/META-INF/spring.factories @@ -0,0 +1 @@ +org.springframework.boot.autoconfigure.AutoConfigurationImportFilter=se.swedenconnect.spring.saml.idp.autoconfigure.redis.RedissonFilter diff --git a/autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 3e7c80fe..032b41c8 100644 --- a/autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -8,6 +8,7 @@ se.swedenconnect.spring.saml.idp.autoconfigure.settings.MessageReplayCheckerAuto se.swedenconnect.spring.saml.idp.autoconfigure.web.security.IdentityProviderSecurityFilterChainAutoConfiguration se.swedenconnect.spring.saml.idp.autoconfigure.error.Saml2IdpErrorAutoConfiguration se.swedenconnect.spring.saml.idp.autoconfigure.redis.RedissonExtensionsAutoConfiguration +se.swedenconnect.spring.saml.idp.autoconfigure.redis.RedissonActivationAutoConfiguration se.swedenconnect.spring.saml.idp.autoconfigure.redis.RedisExtensionsAutoConfiguration se.swedenconnect.spring.saml.idp.autoconfigure.session.RedisSessionAutoConfiguration -se.swedenconnect.spring.saml.idp.autoconfigure.session.MemorySessionAutoConfiguration \ No newline at end of file +se.swedenconnect.spring.saml.idp.autoconfigure.session.MemorySessionAutoConfiguration diff --git a/pom.xml b/pom.xml index 94503b40..90f0f160 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ se.swedenconnect.spring.saml.idp spring-saml-idp-parent pom - 2.3.1 + 2.3.2-SNAPSHOT Sweden Connect :: Spring SAML Identity Provider :: Parent POM Parent POM for Spring SAML Identity Provider libraries @@ -44,8 +44,8 @@ UTF-8 17 - 3.4.0 - 6.2.0 + 3.4.1 + 6.2.1 1.79 2.0.1 1.18.36 diff --git a/saml-identity-provider/pom.xml b/saml-identity-provider/pom.xml index 642f29d6..4415594d 100644 --- a/saml-identity-provider/pom.xml +++ b/saml-identity-provider/pom.xml @@ -9,7 +9,7 @@ se.swedenconnect.spring.saml.idp spring-saml-idp-parent - 2.3.1 + 2.3.2-SNAPSHOT Sweden Connect :: Spring SAML Identity Provider :: Core Library @@ -147,7 +147,7 @@ org.redisson redisson - 3.39.0 + 3.42.0 true @@ -155,7 +155,7 @@ ch.qos.logback logback-classic - 1.5.12 + 1.5.16 test diff --git a/saml-identity-provider/src/main/java/se/swedenconnect/spring/saml/idp/Saml2IdentityProviderVersion.java b/saml-identity-provider/src/main/java/se/swedenconnect/spring/saml/idp/Saml2IdentityProviderVersion.java index f0a0aae9..601f96dc 100644 --- a/saml-identity-provider/src/main/java/se/swedenconnect/spring/saml/idp/Saml2IdentityProviderVersion.java +++ b/saml-identity-provider/src/main/java/se/swedenconnect/spring/saml/idp/Saml2IdentityProviderVersion.java @@ -24,7 +24,7 @@ public final class Saml2IdentityProviderVersion { private static final int MAJOR = 2; private static final int MINOR = 3; - private static final int PATCH = 1; + private static final int PATCH = 2; /** * Global serialization value for SAML Identity Provider classes. diff --git a/samples/client/pom.xml b/samples/client/pom.xml index fdb79f1c..69c47987 100644 --- a/samples/client/pom.xml +++ b/samples/client/pom.xml @@ -9,7 +9,7 @@ se.swedenconnect.spring.saml.idp spring-saml-idp-samples-parent - 2.3.1 + 2.3.2-SNAPSHOT Sweden Connect :: Spring SAML Identity Provider :: Samples :: Client Application diff --git a/samples/demo-boot-idp/pom.xml b/samples/demo-boot-idp/pom.xml index 88d76e54..78dfbec0 100644 --- a/samples/demo-boot-idp/pom.xml +++ b/samples/demo-boot-idp/pom.xml @@ -9,7 +9,7 @@ se.swedenconnect.spring.saml.idp spring-saml-idp-samples-parent - 2.3.1 + 2.3.2-SNAPSHOT Sweden Connect :: Spring SAML Identity Provider :: Samples :: Spring Boot Starter Demo Application @@ -80,10 +80,18 @@ true + + + + org.redisson + redisson-spring-boot-starter + 3.42.0 + org.springframework.session diff --git a/samples/demo-boot-idp/src/main/resources/application.yml b/samples/demo-boot-idp/src/main/resources/application.yml index a2aeb874..1453cf8d 100644 --- a/samples/demo-boot-idp/src/main/resources/application.yml +++ b/samples/demo-boot-idp/src/main/resources/application.yml @@ -12,6 +12,7 @@ server: include-exception: true include-stacktrace: always + management: server: port: 8444 diff --git a/samples/pom.xml b/samples/pom.xml index fdf3c0f2..02fb4616 100644 --- a/samples/pom.xml +++ b/samples/pom.xml @@ -9,7 +9,7 @@ se.swedenconnect.spring.saml.idp spring-saml-idp-parent - 2.3.1 + 2.3.2-SNAPSHOT Sweden Connect :: Spring SAML Identity Provider :: Samples :: Parent POM diff --git a/starter/pom.xml b/starter/pom.xml index f5a836dd..3f41ddd8 100644 --- a/starter/pom.xml +++ b/starter/pom.xml @@ -10,7 +10,7 @@ se.swedenconnect.spring.saml.idp spring-saml-idp-parent - 2.3.1 + 2.3.2-SNAPSHOT Sweden Connect :: Spring SAML Identity Provider :: Spring Boot Starter