0
我有一个现有的Web应用程序使用spring security进行身份验证。它也使用会话管理来允许用户登录一段预定的时间,并使用XSRF令牌来防止XSS攻击。Spring安全会话/ xsrf路径配置
@Override
protected void configure(HttpSecurity http) throws Exception {
// @formatter:off
http
.exceptionHandling()
.authenticationEntryPoint(restEntryPoint())
.and()
.headers().addHeaderWriter(new StaticHeadersWriter("Server",""))
.and()
.httpBasic()
.authenticationEntryPoint(restEntryPoint())
.and()
.logout().addLogoutHandler(myLogoutHandler())
.logoutSuccessHandler(logoutSuccessHandler())
.and()
.authorizeRequests()
.antMatchers("/index.html", "/login", "/").permitAll()
.antMatchers(HttpMethod.OPTIONS).denyAll()
.antMatchers(HttpMethod.HEAD).denyAll()
.anyRequest().authenticated()
.and()
.authenticationProvider(myAuthenticationProvider)
.csrf()
.csrfTokenRepository(csrfTokenRepository())
.and()
.addFilterAfter(csrfHeaderFilter(), SessionManagementFilter.class);
// @formatter:on
}
这对Web应用程序非常有用。然而,现在我被要求添加一个配置,允许第三方客户端应用程序通过纯REST调用来调用我的服务,也就是说它们应该是完全无状态的并且使用http基本认证 - 不应该创建任何会话,并且应该禁用xsrf(I认为...)。
我可以为所有这些客户端API调用定义一个共享URL路径。但是,我如何利用现有的安全配置和服务器来支持这两种需求?