Отключить / включить OAuth2 без двух настроек безопасности - PullRequest
0 голосов
/ 15 ноября 2018

Я работаю над приложением Spring Boot, которое использует OAuth2 для реализации единого входа.
Сейчас я использую аннотацию @ConditionalOnProperty в своей конфигурации безопасности для отключения OAuth2 при необходимости:

@Configuration
@ConditionalOnProperty("some.property")
@Order(SecurityProperties.BASIC_AUTH_ORDER-3)
@EnableOAuth2Sso
public class SecurityConfigurationOAuth2 extends WebSecurityConfigurerAdapter {

У меня также есть вторая конфигурация безопасности, которая используется, когда OAuth отключен:

@Configuration
@Order(SecurityProperties.BASIC_AUTH_ORDER-2)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

Пока это работает, но мне не нравится иметь две почти идентичные конфигурации. Единственное, что нужно отключить / включить свойством - это аннотация @EnableOAuth2Sso.

Есть ли другой способ добиться этого?

1 Ответ

0 голосов
/ 16 ноября 2018

Если это действительно только аннотация @ EnableOAuth2Sso, которую нужно включить / отключить, есть ли причина, по которой вы не можете просто создать другую конфигурацию, которая имеет только эту аннотацию плюс @ConditionalOnProperty или @Profile?

Хотя это и не проверено, вы можете иметь вложенный класс конфигурации, который строго предназначен для условной аннотации, например:

@Configuration
@Order(SecurityProperties.BASIC_AUTH_ORDER-3)
public class SecurityConfigurationOAuth2 extends WebSecurityConfigurerAdapter {
  @Configuration
  @ConditionalOnProperty("some.property")  // Or use a profile
  @EnableOAuth2Sso
  static class EnableSSOConfig {
  }
  ....
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...