Spring安全性 - 自定义AuthenticationProvider无法正常工作 - Java Config

时间:2016-09-01 20:27:16

标签: java spring security authentication spring-security

我已经在标题上挣扎了好几天了,我很沮丧。我不知道我做错了什么以及为什么我的实施不起作用。

让我告诉你我有什么:

Custom AuthenticationProvider:

@Component
public class AuthProvider implements AuthenticationProvider {

    private Logger logger = LoggerFactory.getLogger(AuthProvider.class);

    public AuthProvider() {
        logger.info("Building...");
    }

    public Authentication authenticate(Authentication authentication) throws AuthenticationException {
        logger.info("Authenticate...");
        return null;
    }

    public boolean supports(Class<?> authentication) {
        logger.info("Supports...");
        return true;
    }
}

WebSecurity配置:

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private AuthProvider authProvider;

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.authenticationProvider(authProvider);
    }

    @Override
    public void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests().anyRequest().authenticated();
    }
}

正如您所看到的,我已将记录器添加到AuthenticationProvider中,但没有任何记录器被调用。

我尝试了什么:

  • @Autowired添加到configure
  • 所在的AuthenticationManagerBuilder
  • @EnableGlobalMethodSecurity(prePostEnabled=true)添加到班级
  • 将自定义AuthenticationProvider直接添加到HttpSecurity

我是如何测试的:

  • 通过IntelliJ进行调试 - 没有结果,没有调用断点。
  • 运行应用并发送请求 - 也没有结果,没有日志,没有。

请伙计们以某种方式帮助我。我失去了能量。我讨厌在应该工作的事情上浪费那么多时间:(

2 个答案:

答案 0 :(得分:3)

您可能错过了WebSecurityConfigurerAdapter中的以下方法:

@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
    return super.authenticationManagerBean();
}

同样的事发生在我身上。

答案 1 :(得分:0)

使用 isAssignableFrom() 方法代替 ==equals 我们得到真值,然后流将通过 authenticate()

override fun supports(authentication: Class<*>): Boolean {
    return UsernamePasswordAuthenticationToken::class.java.isAssignableFrom(authentication)
}

GL

Source