使用Spring Security Javaconfig进行基本和基于表单的身份验证

阿德里安·洛佩兹(Adrian Lopez)

我正在尝试为不同的URL模式定义两种不同的安全配置,其中一种使用表单登录,另一种使用针对api的基本身份验证。

我正在寻找的解决方案与此处说明的解决方案类似,网址为http://meera-subbarao.blogspot.co.uk/2010/11/spring-security-combining-basic-and.html,但我想这样做使用Java配置。

提前致谢。

这是我目前拥有的配置:

@Configuration
@EnableWebSecurity
public class AppSecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private UserService userService;

    @Override
    protected void registerAuthentication(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userService);
    }

    @Override
    public void configure(WebSecurity web) throws Exception {
        // Ignore any request that starts with "/resources/".
        web.ignoring().antMatchers("/resources/**");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeUrls().antMatchers("/", "/index", "/user/**", "/about").permitAll()
        .antMatchers("/admin/**").hasRole("ADMIN")
        .anyRequest().authenticated()
        .and().formLogin()
        .loginUrl("/login")
        .failureUrl("/login-error")
        .loginProcessingUrl("/security_check")
        .usernameParameter("j_username").passwordParameter("j_password")
        .permitAll();

        http.logout().logoutUrl("/logout");
        http.rememberMe().rememberMeServices(rememberMeServices()).key("password");
    }

    @Bean
    public RememberMeServices rememberMeServices() {
        TokenBasedRememberMeServices rememberMeServices = new TokenBasedRememberMeServices("password", userService);
        rememberMeServices.setCookieName("cookieName");
        rememberMeServices.setParameter("rememberMe");
        return rememberMeServices;
    }
}
阿德里安·洛佩兹(Adrian Lopez)

我找到的解决方案是在第一个类中创建另一个扩展WebSecurityConfigurerAdapter的类,如https://github.com/spring-projects/spring-security-javaconfig/blob/master/samples-web.md#sample-multi中所述-http-web-configuration

我的解决方案如下:

@Configuration
@EnableWebSecurity
public class AppSecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private UserService userService;

    @Override
    protected void registerAuthentication(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userService);
    }

    @Override
    public void configure(WebSecurity web) throws Exception {
        // Ignore any request that starts with "/resources/".
        web.ignoring().antMatchers("/resources/**");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeUrls().antMatchers("/", "/index", "/user/**", "/about").permitAll()
            .antMatchers("/admin/**").hasRole("ADMIN")
            .anyRequest().authenticated()
            .and().formLogin()
            .loginUrl("/login")
            .failureUrl("/login-error")
            .loginProcessingUrl("/security_check")
            .usernameParameter("j_username").passwordParameter("j_password")
            .permitAll();

        http.logout().logoutUrl("/logout");
        http.rememberMe().rememberMeServices(rememberMeServices()).key("password");
    }

    @Bean
    public RememberMeServices rememberMeServices() {
        TokenBasedRememberMeServices rememberMeServices = new TokenBasedRememberMeServices("password", userService);
        rememberMeServices.setCookieName("cookieName");
        rememberMeServices.setParameter("rememberMe");
        return rememberMeServices;
    }

    @Configuration
    @Order(1)
    public static class ApiWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {

        @Override
        protected void registerAuthentication(AuthenticationManagerBuilder auth) throws Exception {
            auth.inMemoryAuthentication().withUser("api").password("pass").roles("API");
        }

        protected void configure(HttpSecurity http) throws Exception {
            http.authorizeUrls()
                .antMatchers("/api/**").hasRole("API")
                .and()
                .httpBasic();
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Spring Security和JavaConfig进行身份验证时出现PartialResultException

来自分类Dev

使用Spring Security对两个应用程序进行基于相同表单的身份验证

来自分类Dev

如何使用spring Security通过基于邮件和uid的LDAP对用户进行身份验证?

来自分类Dev

Spring Security:使用HTTP Basic和表单登录进行身份验证

来自分类Dev

使用REST和Javaconfig的Spring Security中的摘要式身份验证

来自分类Dev

用于Hawtio的基本身份验证的Spring Security 4.x JavaConfig

来自分类Dev

使用Spring Security + Spring数据+ MongoDB进行身份验证

来自分类Dev

Spring Security-基于令牌的API身份验证和用户/密码身份验证

来自分类Dev

使用Spring Boot 2和Spring Security 5进行多重身份验证

来自分类Dev

使用Gmail等Spring Security进行两因素身份验证

来自分类Dev

Tomcat身份验证和Spring Security

来自分类Dev

Spring Boot + Spring Security:如何取消基本身份验证表单

来自分类Dev

使用Spring Security无需身份验证和授权

来自分类Dev

使用UserDetailsService的Spring Security身份验证

来自分类Dev

与基于Mongo的db的基于Spring Security的身份验证的混淆

来自分类Dev

Spring MVC REST + Spring Security +基本身份验证

来自分类Dev

使用HttpClient的基于表单的身份验证-j_security_check

来自分类Dev

使用HttpClient的基于表单的身份验证-j_security_check

来自分类Dev

Spring Security基本身份验证始终导致404

来自分类Dev

Spring Security-基本身份验证

来自分类Dev

在Spring Security中接收令牌的基本身份验证

来自分类Dev

在Spring Security中接收令牌的基本身份验证

来自分类Dev

Spring Security 条件基本身份验证

来自分类Dev

为什么在Spring Security中对“ anonymousUser”进行身份验证?

来自分类Dev

通过REST端点进行Spring Security身份验证/授权

来自分类Dev

如何使用xml配置文件,JAVA,Spring Security使用LDAP对用户进行身份验证

来自分类Dev

Angular与Spring Security登录和身份验证

来自分类Dev

使用Java配置的Spring Security预身份验证

来自分类Dev

使用Spring Security / Social调试Facebook身份验证

Related 相关文章

  1. 1

    使用Spring Security和JavaConfig进行身份验证时出现PartialResultException

  2. 2

    使用Spring Security对两个应用程序进行基于相同表单的身份验证

  3. 3

    如何使用spring Security通过基于邮件和uid的LDAP对用户进行身份验证?

  4. 4

    Spring Security:使用HTTP Basic和表单登录进行身份验证

  5. 5

    使用REST和Javaconfig的Spring Security中的摘要式身份验证

  6. 6

    用于Hawtio的基本身份验证的Spring Security 4.x JavaConfig

  7. 7

    使用Spring Security + Spring数据+ MongoDB进行身份验证

  8. 8

    Spring Security-基于令牌的API身份验证和用户/密码身份验证

  9. 9

    使用Spring Boot 2和Spring Security 5进行多重身份验证

  10. 10

    使用Gmail等Spring Security进行两因素身份验证

  11. 11

    Tomcat身份验证和Spring Security

  12. 12

    Spring Boot + Spring Security:如何取消基本身份验证表单

  13. 13

    使用Spring Security无需身份验证和授权

  14. 14

    使用UserDetailsService的Spring Security身份验证

  15. 15

    与基于Mongo的db的基于Spring Security的身份验证的混淆

  16. 16

    Spring MVC REST + Spring Security +基本身份验证

  17. 17

    使用HttpClient的基于表单的身份验证-j_security_check

  18. 18

    使用HttpClient的基于表单的身份验证-j_security_check

  19. 19

    Spring Security基本身份验证始终导致404

  20. 20

    Spring Security-基本身份验证

  21. 21

    在Spring Security中接收令牌的基本身份验证

  22. 22

    在Spring Security中接收令牌的基本身份验证

  23. 23

    Spring Security 条件基本身份验证

  24. 24

    为什么在Spring Security中对“ anonymousUser”进行身份验证?

  25. 25

    通过REST端点进行Spring Security身份验证/授权

  26. 26

    如何使用xml配置文件,JAVA,Spring Security使用LDAP对用户进行身份验证

  27. 27

    Angular与Spring Security登录和身份验证

  28. 28

    使用Java配置的Spring Security预身份验证

  29. 29

    使用Spring Security / Social调试Facebook身份验证

热门标签

归档