Spring安全性java配置基本认证过滤器

时间:2016-07-16 22:27:12

标签: spring spring-security spring-java-config

我正在尝试为我的API添加基本身份验证,其中将根据MongoDB中存储的凭据对用户进行身份验证。我想使用java配置而不是基于XML的配置。到目前为止,我所学到的是我必须通过扩展@Configuration并覆盖WebSecurityConfigurerAdapter方法来创建configure。我可以通过addFilterBefore()添加自定义过滤器。

但是如何在过滤器中获取Authentication标头信息,如果用户通过身份验证,如何继续。我一直在谷歌搜索,但没有找到任何一个好的例子,可以帮助像我这样刚刚进入春季一周的新手。

是否有人有一个很好的教程或样本可以帮助我开始这个?提前谢谢。

1 个答案:

答案 0 :(得分:0)

例如,您可以使用下一个解决方案。

@Override
protected void configure(HttpSecurity http) throws Exception {    
    http.httpBasic().authenticationEntryPoint(getBasicAuthenticationEntryPoint());
}

@Bean
public BasicAuthenticationEntryPoint getBasicAuthenticationEntryPoint(){
    BasicAuthenticationEntryPoint basicAuthenticationEntryPoint = new BasicAuthenticationEntryPoint();
    basicAuthenticationEntryPoint.setRealmName("Basic Authentication");
    return basicAuthenticationEntryPoint;
}

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

@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
    auth
            .userDetailsService(userDetailsService)
            .passwordEncoder(passwordEncoder());

}

它对我有用。但是您需要实现UserDetailsS​​ervice接口。 Spring自动检查是用户身份验证的,如果没有,则尝试继续进行身份验证。