Skip to content

Commit

Permalink
IS-96 Disabled Redisson autoconfiguration if Redis is not configured (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
martin-lindstrom authored Jan 10, 2025
1 parent bca53f3 commit fdd1e9d
Show file tree
Hide file tree
Showing 14 changed files with 115 additions and 16 deletions.
4 changes: 2 additions & 2 deletions autoconfigure/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<parent>
<groupId>se.swedenconnect.spring.saml.idp</groupId>
<artifactId>spring-saml-idp-parent</artifactId>
<version>2.3.1</version>
<version>2.3.2-SNAPSHOT</version>
</parent>

<name>Sweden Connect :: Spring SAML Identity Provider :: Spring Boot Autoconfigure module</name>
Expand Down Expand Up @@ -106,7 +106,7 @@
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.40.1</version>
<version>3.42.0</version>
<optional>true</optional>
</dependency>

Expand Down
Original file line number Diff line number Diff line change
@@ -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 {
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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)
Expand Down Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
}

}
1 change: 1 addition & 0 deletions autoconfigure/src/main/resources/META-INF/spring.factories
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
org.springframework.boot.autoconfigure.AutoConfigurationImportFilter=se.swedenconnect.spring.saml.idp.autoconfigure.redis.RedissonFilter
Original file line number Diff line number Diff line change
Expand Up @@ -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
se.swedenconnect.spring.saml.idp.autoconfigure.session.MemorySessionAutoConfiguration
6 changes: 3 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<groupId>se.swedenconnect.spring.saml.idp</groupId>
<artifactId>spring-saml-idp-parent</artifactId>
<packaging>pom</packaging>
<version>2.3.1</version>
<version>2.3.2-SNAPSHOT</version>

<name>Sweden Connect :: Spring SAML Identity Provider :: Parent POM</name>
<description>Parent POM for Spring SAML Identity Provider libraries</description>
Expand Down Expand Up @@ -44,8 +44,8 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>17</java.version>

<spring.boot.version>3.4.0</spring.boot.version>
<spring.version>6.2.0</spring.version>
<spring.boot.version>3.4.1</spring.boot.version>
<spring.version>6.2.1</spring.version>
<bc.version>1.79</bc.version>
<credentials-support.version>2.0.1</credentials-support.version>
<lombok.version>1.18.36</lombok.version>
Expand Down
6 changes: 3 additions & 3 deletions saml-identity-provider/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<parent>
<groupId>se.swedenconnect.spring.saml.idp</groupId>
<artifactId>spring-saml-idp-parent</artifactId>
<version>2.3.1</version>
<version>2.3.2-SNAPSHOT</version>
</parent>

<name>Sweden Connect :: Spring SAML Identity Provider :: Core Library</name>
Expand Down Expand Up @@ -147,15 +147,15 @@
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.39.0</version>
<version>3.42.0</version>
<optional>true</optional>
</dependency>

<!-- Test -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.5.12</version>
<version>1.5.16</version>
<scope>test</scope>
</dependency>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
2 changes: 1 addition & 1 deletion samples/client/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<parent>
<groupId>se.swedenconnect.spring.saml.idp</groupId>
<artifactId>spring-saml-idp-samples-parent</artifactId>
<version>2.3.1</version>
<version>2.3.2-SNAPSHOT</version>
</parent>

<name>Sweden Connect :: Spring SAML Identity Provider :: Samples :: Client Application</name>
Expand Down
10 changes: 9 additions & 1 deletion samples/demo-boot-idp/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<parent>
<groupId>se.swedenconnect.spring.saml.idp</groupId>
<artifactId>spring-saml-idp-samples-parent</artifactId>
<version>2.3.1</version>
<version>2.3.2-SNAPSHOT</version>
</parent>

<name>Sweden Connect :: Spring SAML Identity Provider :: Samples :: Spring Boot Starter Demo Application</name>
Expand Down Expand Up @@ -80,10 +80,18 @@
<optional>true</optional>
</dependency>

<!--
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
-->

<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.42.0</version>
</dependency>

<dependency>
<groupId>org.springframework.session</groupId>
Expand Down
1 change: 1 addition & 0 deletions samples/demo-boot-idp/src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ server:
include-exception: true
include-stacktrace: always


management:
server:
port: 8444
Expand Down
2 changes: 1 addition & 1 deletion samples/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<parent>
<groupId>se.swedenconnect.spring.saml.idp</groupId>
<artifactId>spring-saml-idp-parent</artifactId>
<version>2.3.1</version>
<version>2.3.2-SNAPSHOT</version>
</parent>

<name>Sweden Connect :: Spring SAML Identity Provider :: Samples :: Parent POM</name>
Expand Down
2 changes: 1 addition & 1 deletion starter/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<parent>
<groupId>se.swedenconnect.spring.saml.idp</groupId>
<artifactId>spring-saml-idp-parent</artifactId>
<version>2.3.1</version>
<version>2.3.2-SNAPSHOT</version>
</parent>

<name>Sweden Connect :: Spring SAML Identity Provider :: Spring Boot Starter</name>
Expand Down

0 comments on commit fdd1e9d

Please sign in to comment.