URL和用户上的Spring Security配置

爱德华多·德宝拉

我想要REST服务器中的两种请求:具有路径“ / freerest /”的任何人都可以请求,其他人则需要身份验证。

这是我的代码:

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

@Configuration
class WebSecurityConfiguration extends GlobalAuthenticationConfigurerAdapter {

  @Autowired
  UserAccountRepository userAccountRepository;

  @Override
  public void init(AuthenticationManagerBuilder auth) throws Exception {
    auth.userDetailsService(userDetailsService());
  }

  @Bean
  UserDetailsService userDetailsService() {
    return new UserDetailsService() {

      @Override
      public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
        UserAccount account = userAccountRepository.findByEmail(email);
        if(account != null) {
            return new User(account.getEmail(), account.getPassword(), true, true, true, true,
                AuthorityUtils.createAuthorityList("USER"));
        } else {
            throw new UsernameNotFoundException("could not find the user '"
                  + email + "'");
        }
      }

    };
  }
}

@EnableWebSecurity
@Configuration
class WebSecurityConfig extends WebSecurityConfigurerAdapter {

  @Override
  protected void configure(HttpSecurity http) throws Exception {    
    http.authorizeRequests().antMatchers("/freerest/**").permitAll().and().authorizeRequests().anyRequest().hasAnyAuthority("USER");
  }
}

在我的脑海中,在hasAnyAuthority(“ USER”)之后,应该有一个.permitAll()。但是不要。

因此,freerest路径可以正常工作,但是如果我尝试数据库中的某个用户或默认的Spring用户,则会得到403。

怎么了?

法拉吉·法鲁克(Faraj Farook)

试试这个。您已and()在antMatch和任何请求之间添加了一个我认为这就是问题所在。

并添加正确的身份验证领域,后跟一个and(),如下所示。在这里,我使用HTTP基本身份验证以实现宁静

    @Configuration
    @EnableWebSecurity
    @EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true, proxyTargetClass = true)
    public static class ApiWebSecurityConfig extends WebSecurityConfigurerAdapter{

        ......
        ......
        ......

        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.csrf().disable()
                    .authorizeRequests()
                        .antMatchers("/freerest/**").permitAll()
                        .anyRequest().hasAnyAuthority("USER")
                    .and()
                    .httpBasic();
        }

        ......
        ......
        ......

    }

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Spring Security Java配置

来自分类Dev

Spring Security服务配置

来自分类Dev

Spring Security LDAP配置

来自分类Dev

如何配置Spring Security

来自分类Dev

spring security sasl:无法配置 SSO url

来自分类Dev

Stormpath Spring Security Java配置

来自分类Dev

配置Spring Security以显示样式

来自分类Dev

Spring Security 3.2 Java配置

来自分类Dev

Spring Boot中Spring Security的XML配置

来自分类Dev

使用Spring Boot配置Spring Security

来自分类Dev

具有XML配置的Spring Security无法验证用户

来自分类Dev

具有XML配置的Spring Security无法验证用户

来自分类Dev

Spring Security-简单的用户注册(不是xml配置)

来自分类Dev

Spring Security OAuth2简单配置

来自分类Dev

Spring Security-XML与Java配置

来自分类Dev

Spring Security不支持的配置属性

来自分类Dev

如何覆盖默认的Spring Security XML配置?

来自分类Dev

Spring Security忽略了多个HTTP配置

来自分类Dev

Spring Security Session / XSRRF配置按路径

来自分类Dev

Spring Security在安全注释配置中排除URL模式

来自分类Dev

使用UserDetailsService和Java配置登录Spring Security

来自分类Dev

Spring Security OAuth2和表单登录配置

来自分类Dev

使用UserDetailsService和Java配置登录Spring Security

来自分类Dev

Spring security java配置和多个http入口点

来自分类Dev

如何使用Spring-Security 3和Hibernate 4将Spring Security xml配置休眠转换为Java配置

来自分类Dev

在Spring 4中配置不带XML的Spring Security

来自分类Dev

如何在Spring Boot中覆盖Spring Security默认配置

来自分类Dev

Spring Security身份验证提供程序Java配置

来自分类Dev

如何在我的项目中正确配置Spring Security?

Related 相关文章

热门标签

归档