From e1ad232f79ad9a7e0022ce91014b3a9caf41cc9a Mon Sep 17 00:00:00 2001 From: John Blum Date: Thu, 19 Mar 2020 13:36:55 -0700 Subject: [PATCH] DATAGEODE-310 - Use Environment accessible properties to enable/disable Apache Shiro and Authentication Auto-configuration. --- .../ApacheShiroSecurityConfiguration.java | 16 ++++++++++++++-- ...utoConfiguredAuthenticationConfiguration.java | 12 +++++++++++- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/annotation/ApacheShiroSecurityConfiguration.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/annotation/ApacheShiroSecurityConfiguration.java index 0075062d..0b1d7904 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/annotation/ApacheShiroSecurityConfiguration.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/annotation/ApacheShiroSecurityConfiguration.java @@ -43,6 +43,7 @@ import org.springframework.context.annotation.ConditionContext; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; import org.springframework.core.OrderComparator; +import org.springframework.core.env.Environment; import org.springframework.core.type.AnnotatedTypeMetadata; import org.springframework.data.gemfire.config.annotation.support.AbstractAnnotationConfigSupport; import org.springframework.data.gemfire.util.CollectionUtils; @@ -238,13 +239,24 @@ public class ApacheShiroSecurityConfiguration extends AbstractAnnotationConfigSu protected static final String APACHE_SHIRO_LIFECYCLE_BEAN_POST_PROCESSOR_CLASS_NAME = "org.apache.shiro.spring.LifecycleBeanPostProcessor"; + public static final String SPRING_DATA_GEMFIRE_SECURITY_SHIRO_ENABLED = + "spring.data.gemfire.security.shiro.enabled"; + + private boolean isApacheShiroPresent(ConditionContext context) { + return ClassUtils.isPresent(APACHE_SHIRO_LIFECYCLE_BEAN_POST_PROCESSOR_CLASS_NAME, + context.getClassLoader()); + } + + private boolean isEnabled(Environment environment) { + return environment.getProperty(SPRING_DATA_GEMFIRE_SECURITY_SHIRO_ENABLED, Boolean.class, true); + } + /** * @inheritDoc */ @Override public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { - return ClassUtils.isPresent(APACHE_SHIRO_LIFECYCLE_BEAN_POST_PROCESSOR_CLASS_NAME, - context.getClassLoader()); + return isEnabled(context.getEnvironment()) && isApacheShiroPresent(context); } } } diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/annotation/AutoConfiguredAuthenticationConfiguration.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/annotation/AutoConfiguredAuthenticationConfiguration.java index 7278ac3a..8ae1f0d4 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/annotation/AutoConfiguredAuthenticationConfiguration.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/annotation/AutoConfiguredAuthenticationConfiguration.java @@ -206,9 +206,19 @@ public class AutoConfiguredAuthenticationConfiguration { public static class AutoConfiguredAuthenticationCondition implements Condition { + public static final String SPRING_DATA_GEMFIRE_SECURITY_AUTH_ENABLED = + "spring.data.gemfire.security.auth.auto-configure.enabled"; + + private static boolean isEnabled(Environment environment) { + return environment.getProperty(SPRING_DATA_GEMFIRE_SECURITY_AUTH_ENABLED, Boolean.class, true); + } + @Override public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) { - return isMatch(conditionContext.getEnvironment()); + + Environment environment = conditionContext.getEnvironment(); + + return isEnabled(environment) && isMatch(environment); } } }