我正在尝试为Gateway,UI,Resource构建一个完整的sample code。除非我试图发帖,否则每件事情都很完美。
我首先注意到我有一个来自网关的双csrf和来自UI的一个。所以我的决定我不确定是否正确是禁用UI上的csrf并将其保留在网关(Zuul代理)上,但我无法做到这一点。
我无法分辨哪个适配器应该WebSecurityConfigurerAdapter
或ResourceServerConfigurerAdapter
一旦我声明WebSecurityConfigurerAdapter
整个OAuth2Sso停止工作并且我被拒绝访问,ResourceServerConfigurerAdapter
似乎没有做任何事情。
首先,我想在@EnableZuulProxy
上禁用csrf
@EnableOAuth2Sso
答案 0 :(得分:0)
基于此answer我发现@EnableOAuth2Sso
应该在同一个WebSecurityConfigurerAdapter
上,如果存在,或者我们最终会有2个适配器,这样做会修复所有内容
@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();
}
}
在春季启动时1.5.8我还添加了设置security.oauth2.resource.filter-order=3
。见https://github.com/spring-projects/spring-security-oauth/issues/1016