我正在尝试建立一个基于Spring Boot的Web服务器,该服务器同时支持基于会话的安全UI,包括CSRF保护和通过基本身份验证进行身份验证且不需要CSRF的无状态访问。我尝试支持的两个用例是一个标准的AngularJS UI和一个对每个请求进行身份验证的简单REST api。
有人知道如何配置吗?我已经看到了很多使用一个或另一个但没有同时使用的示例。
因此,我终于再次回到研究这个问题,结果发现解决方案几乎和我期望的一样简单。解决方案是有两个WebSecurityConfigurerAdapter类。此处描述:
WebSecurityConfigurerAdapter
http://docs.spring.io/spring- security/site/docs/3.2.x/reference/htmlsingle/#multiple- httpsecurity
执行此操作时需要注意两件事:
@Order
@Order(1)
HttpSecurity
antMatcher()
@RequestMapping
因此,它们是:
@Configuration @EnableWebSecurity @Order(1) public class APISecurityConfig extends WebSecurityConfigurerAdapter { @Override @Order(1) protected void configure(HttpSecurity http) throws Exception { http.antMatcher("/api/**") .authorizeRequests() .anyRequest().fullyAuthenticated().and() .httpBasic().and() .csrf().disable(); } }
和
@Configuration @EnableWebSecurity public class UISecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/ui/**").authenticated(); } }