【问题标题】:Spring security: difference between WebSecurityConfigurerAdapter and GlobalAuthenticationConfigurerAdapterSpring 安全性:WebSecurityConfigurerAdapter 和 GlobalAuthenticationConfigurerAdapter 之间的区别
【发布时间】:2018-09-13 09:56:15
【问题描述】:

这两个类:

WebSecurityConfigurerAdapter 
GlobalAuthenticationConfigurerAdapter 

似乎对我做同样的事情。它们都提供了不同的方法configure(...) 来自定义WebSecurity,例如配置UserDetailsService。在网上找到的一些例子中,我看到这两个类都被扩展了(比如这个,http://ryanjbaxter.com/2015/01/06/securing-rest-apis-with-spring-boot/):

@Configuration
class WebSecurityConfiguration extends GlobalAuthenticationConfigurerAdapter {...}

@EnableWebSecurity
@Configuration
class WebSecurityConfig extends WebSecurityConfigurerAdapter {...}

但在某些示例中,只需要WebSecurityConfigurerAdapter(扩展)。

我不确定两者之间的区别?哪一个能做到另一个不能?或者如果它们都需要,那么它们中的哪一个用于 Spring 安全的哪个方面?

我看到的唯一区别是@EnableWebSecurity 通常被注释在扩展WebSecurityConfigurerAdapter 的类之上,而不是在扩展GlobalAuthenticationConfigurerAdapter 的类中

=============实验==================

我尝试删除扩展GlobalAuthenticationConfigurerAdapter的类,并将与UserDetailsS​​ervice相关的代码携带到扩展WebSecurityConfigurerAdapter的类中(实际代码见上面的链接),它仍然有效。

【问题讨论】:

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


    【解决方案1】:

    基本上WebSecurityConfigurerAdapter 用于创建FilterChainProxy 参考这个docs 至于GlobalAuthenticationConfigurerAdapter 用作SecurityConfigurer,可用于轻松构建内存身份验证、LDAP 身份验证、基于 JDBC 的身份验证、添加 UserDetailsS​​ervice 和添加 AuthenticationProvider 的。参考这个docs希望这有帮助!

    【讨论】:

    • WebSecurityConfigurerAdapter 也可用于配置内存认证、LDAP、JDBC。这两个类都有 configure(AuthenticationManagerBuilder auth) 方法,用于执行此操作。
    • 在我之前的项目中,我使用GlobalAuthenticationConfigurerAdapter 来配置全局配置,然后我使用WebSecurityConfigurerAdapter 来覆盖具有不同配置的特定路由的这些配置
    • 你能举一些例子来说明 1) 全局配置和 2) 一些特定于路由的配置吗?谢谢
    • @Simo 你发现区别了吗?
    猜你喜欢
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 2017-04-06
    • 2011-01-01
    • 2015-09-24
    相关资源
    最近更新 更多