有人能解释什么时候覆盖配置(HttpSecurity)
、配置(WebSecurity)
和配置(AuthenticationManagerBuilder)
吗?
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());
}
配置(身份验证管理器构建器)用于通过允许轻松添加身份验证提供程序来建立身份验证机制:例如,以下定义了具有内置“用户”和“管理员”登录的内存中身份验证。
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: 这是可以