禁用/启用没有两个安全配置的OAuth2

时间:2018-11-15 11:57:51

标签: java spring spring-boot spring-security spring-security-oauth2

我正在使用OAuth2实现SSO的Spring Boot应用程序中。
现在,我在安全配置上使用@ConditionalOnProperty批注在需要时禁用OAuth2:

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

我还有第二种安全配置,在禁用OAuth时会使用beeing:

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

到目前为止,这是可行的,但我不喜欢具有两个几乎相同的配置。唯一需要由属性禁用/启用的是@EnableOAuth2Sso批注。

还有另一种方法可以实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

如果真的仅需要启用/禁用@ 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 {
  }
  ....
}