@EnableOAuth2Sso 和 csrf

@EnableOAuth2Sso and csrf

我正在尝试为网关、UI、资源构建一个完整的 sample code。除了我尝试做 post .

之外,每件事都很完美

我首先注意到我有两个 csrf,一个来自网关,一个来自 UI。所以我的决定 我不确定是否正确 是在 UI 上禁用 csrf 并将其保留在网关(Zuul 代理)上,但我无法做到这一点。

我不知道应该扩展哪个适配器 WebSecurityConfigurerAdapterResourceServerConfigurerAdapter

一旦我声明 WebSecurityConfigurerAdapter 整个 OAuth2Sso 停止工作,我的访问被拒绝并且 ResourceServerConfigurerAdapter 似乎没有做任何事情。

起初我想在 @EnableZuulProxy 上禁用 csrf 和 @EnableOAuth2Sso

基于此 answer 我发现 @EnableOAuth2Sso 应该在同一个 WebSecurityConfigurerAdapter 上,如果存在的话,否则我们最终会得到 2 Adapter ,这样做可以解决所有问题

@Configuration
@EnableOAuth2Sso
public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter {


    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .csrf()
                .disable()
                //.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
                //.and()
                .authorizeRequests()
                .anyRequest().authenticated();

    }
}

关于spring boot 1.5.8 我也添加设置security.oauth2.resource.filter-order=3。参见 https://github.com/spring-projects/spring-security-oauth/issues/1016