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路徑。但是,我如何利用現有的安全配置和服務器來支持這兩種需求?