java - Spring Security XML 配置与 Java 配置

标签 java xml spring spring-mvc spring-security

我有 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();
}}

最佳答案

您必须确定特定的过滤器类别。

例如,默认的 LAST 过滤器应该是 FilterSecurityInterceptor - Filter Ordering .

PRE_AUTH_FILTER 可以是任何扩展 AbstractPreAuthenticatedProcessingFilter 的东西,具体取决于您的配置。

基本上,Java Config 会强制您在排序时明确说明,以避免以后出现令人讨厌的意外情况。

关于java - Spring Security XML 配置与 Java 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37970413/

相关文章:

spring - chalice 2.3。 0 和计划 tyrus

java - tomcat 7 中的应用程序线程

用于从字符串解码二进制编码的十进制 (BCD) 的 Java 代码或库

java - 单击按钮后更改 JPanel

xml - XSLT XML : highlight a search word in search results

xml - 如何在 DITA 中显示任务内部的代码

java - 您可以在数据库表或类似表上放置一个监听器吗

java - Spring MVC 的 REST API 部署

java - 解决 Mac 和 Windows 之间的路径差异

xml - XSD "version"属性语义