Spring Security XML 配置与 Java 配置
Posted
技术标签:
【中文标题】Spring Security XML 配置与 Java 配置【英文标题】:Spring Security XML Config Vs Java Config 【发布时间】:2016-10-24 12:51:54 【问题描述】:我有 Spring Security 的 XML 配置,这是我通过大量指南完成的。 它应该拦截 url 并使用自定义过滤器通过 ldap 身份验证管理器提供身份验证。
所以这里是:
<http create-session="stateless" auto-config='false' use-expressions="true">
<anonymous enabled="true"/>
<intercept-url pattern="/index.html" access="permitAll()" method="GET"/>
<intercept-url pattern="/login" access="permitAll()" method="GET"/>
<custom-filter before="LAST" ref="statelessLoginFilter"/>
<custom-filter before="PRE_AUTH_FILTER" ref="statelessAuthFilter"/>
<intercept-url pattern="/one*" access="hasRole('ROLE_ONE')" method="GET"/>
<intercept-url pattern="/two*" access="hasRole('ROLE_TWO')" method="GET"/>
<!-- another intercept-url stuff -->
<csrf disabled="true"/>
<!-- authentication manager and stuff -->
</http>
现在我正在尝试用 Java Config 重写它。但我不知道如何在那里使用自定义过滤器。有 .addFilterBefore 但我不能只把 before="LAST" 或 before="PRE_AUTH_FILTER" 放在那里。因为没有这种东西。我该如何重写?
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter
@Autowired
GenericFilterBean statelessAuthFilter;
@Autowired
AbstractAuthenticationProcessingFilter statelessLoginFilter;
public SecurityConfig()
@Override
protected void configure(HttpSecurity http) throws Exception
http
.authorizeRequests()
.antMatchers("/one**", "/two**").access("hasRole('ONE')")
.antMatchers("/login").permitAll()
.anyRequest().authenticated()
.and()
.addFilterBefore(statelessAuthFilter, GenericFilterBean.class)
.addFilterBefore(statelessLoginFilter, BasicAuthenticationFilter.class)
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and().anonymous()
.and().csrf().disable();
【问题讨论】:
【参考方案1】:您必须确定特定的过滤器类别。
例如,默认的 LAST 过滤器应该是 FilterSecurityInterceptor
- Filter Ordering。
PRE_AUTH_FILTER 可以是扩展 AbstractPreAuthenticatedProcessingFilter
的任何内容,具体取决于您的配置。
基本上,Java Config 会强制您在排序时明确说明,以避免以后出现令人讨厌的意外。
【讨论】:
以上是关于Spring Security XML 配置与 Java 配置的主要内容,如果未能解决你的问题,请参考以下文章
Spring Security XML 配置与 Java 配置
IIS 7.5 与 aws elb 问题 http 到 https j_spring_security_check.action
spring-mvc 5 j_spring_security_check 404页面错误
将 Waffle Spring Security XML 配置迁移到 Spring Boot