当前位置: 首页 > 知识库问答 >
问题:

HttpSecurity、WebSecurity和AuthenticationManagerBuilder

凌照
2023-03-14

有人能解释什么时候覆盖配置(HttpSecurity)配置(WebSecurity)配置(AuthenticationManagerBuilder)吗?

共有2个答案

万俟沛
2023-03-14

web Security < code > ignition()方法的一般用法省略了Spring Security,Spring Security的所有特性都不可用。WebSecurity基于HttpSecurity之上。

@Override
public void configure(WebSecurity web) throws Exception {
    web
        .ignoring()
        .antMatchers("/resources/**")
        .antMatchers("/publics/**");
}

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .authorizeRequests()
        .antMatchers("/admin/**").hasRole("ADMIN")
        .antMatchers("/publics/**").hasRole("USER") // no effect
        .anyRequest().authenticated();
}

上面示例中的WebSecurity让Spring忽略/资源/**/Publics/**。因此,HttpSecurity中的. antMatcher("/Publics/**"). hasRole("USER")未被考虑。

这将从安全过滤器链中完全省略请求模式。请注意,与此路径匹配的任何内容都不会应用任何身份验证或授权服务,并且可以自由访问。

configure(HttpSecurity)允许基于选择匹配在资源级别配置基于web的安全性-例如,下面的示例将以/admin/开头的URL限制为具有管理员角色的用户,并声明任何其他URL都需要成功验证。

< code > configure(web security)用于影响全局安全性的配置设置(忽略资源、设置调试模式、通过实现自定义防火墙定义拒绝请求)。例如,出于身份验证的目的,下面的方法会导致任何以< code>/resources/开头的请求被忽略。

AuthenticationManagerBuilder
extends AbstractConfiguredSecurityBuilder<AuthenticationManager,AuthenticationManagerBuilder>
implements ProviderManagerBuilder<AuthenticationManagerBuilder>

SecurityBuilder用于创建AuthentiationManager。允许轻松构建内存身份验证、LDAP身份验证、基于JDBC的身份验证、添加UserDetailsService和添加AuthentiationProvider的。

@Override
     protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication().withUser("user").password("password").roles("USER"); 
        auth.userDetailsService(customUserDetailService).passwordEncoder(new BCryptPasswordEncoder());
     }
苏晓博
2023-03-14

配置(身份验证管理器构建器)用于通过允许轻松添加身份验证提供程序来建立身份验证机制:例如,以下定义了具有内置“用户”和“管理员”登录的内存中身份验证。

public void configure(AuthenticationManagerBuilder auth) {
    auth
        .inMemoryAuthentication()
        .withUser("user")
        .password("password")
        .roles("USER")
    .and()
        .withUser("admin")
        .password("password")
        .roles("ADMIN","USER");
}

configure(HttpSecurity)允许基于选择匹配在资源级别配置基于web的安全性-例如,下面的示例将以/admin/开头的URL限制为具有管理员角色的用户,并声明任何其他URL都需要成功验证。

protected void configure(HttpSecurity http) throws Exception {
    http
        .authorizeRequests()
        .antMatchers("/admin/**").hasRole("ADMIN")
        .anyRequest().authenticated()
}

configure(WebSecurity)用于影响全局安全性的配置设置(忽略资源、设置调试模式、通过实现自定义防火墙定义拒绝请求)。例如,以下方法将导致出于身份验证目的而忽略任何以/resources/开头的请求。

public void configure(WebSecurity web) throws Exception {
    web
        .ignoring()
        .antMatchers("/resources/**");
}

您可以参考以下链接了解更多信息Spring SecurityJavaConfig Preview: Web Security

 类似资料:
  • 问题内容: 谁能解释何时覆盖以及? 问题答案: configure(AuthenticationManagerBuilder)用于通过允许轻松添加AuthenticationProviders来建立身份验证机制:例如,以下内容定义了具有内置“用户”和“管理员”登录名的内存中身份验证。 configure(HttpSecurity)允许基于选择匹配在资源级别配置基于Web的安全性-例如,以下示例将以

  • 这个问题看起来可能重复,但以下答案都没有解释何时使用: 和 HttpSecurity、WebSecurity和AuthenticationManagerBuilder Spring Security中Web忽略和Http允许的区别 通过阅读StackOverflow asnwers和几篇文章,我了解到: configure(HttpSecurity)允许在资源级别配置基于web的安全性。 conf

  • 我使用的Spring安全与oAuth2,但我有一个问题,我没有找到任何答案,在许多项目的例子,你有2次配置(HttpSecurity超文本传输协议)。 例如在https://github.com/spring-projects/spring-security-oauth/blob/master/samples/oauth2/sparklr/src/main/java/org/springframe

  • 到目前为止我们的 SecurityConfig 只包含了关于如何验证我们的用户的信息。Spring Security怎么知道我们想对所有的用户进行验证?Spring Security怎么知道我们需要支持基于表单的验证?原因是WebSecurityConfigurerAdapter在 configure(HttpSecurity http) 方法提供了一个默认的配置,看起来和下面类似: protec

  • 我试图理解RequestMatcher、AntMatcher等是如何工作的。我读了一些帖子,了解了基础知识。实际上,我有一个简单的基本配置: 我真的不明白第1、2、3点。根据我的理解,这意味着和的请求是映射的,应该是授权请求。所有其他请求都需要authenticatoin。 从我的角度来看,这应该是与第一个配置相同的逻辑。但实际上endpoint不再可访问。 我非常感谢你的澄清 更新1: 这是可以