@EnableOAuth2Sso 引发的一个血的教训

背景:
最近项目整体升级, 引入spring cloud security 和 spring security oauth2 等框架
在网上各种查找资料,了解到项目还可以做sso 于是,参考网上资料简单搭了几个项目

  • 在项目启动类 加上注解 @EnableOAuth2Sso

这一步就是错误的开始。。。
当你打开项目时, 会遇到各种 spring securiy 的问题, csrf、x-frame-options
当你只引入 spring security 时 这个问题很好解决

http.headers().frameOptions().disable().and().csrf().disable(); 

这样就可以解决, 但是由于集成了 @EnableOAuth2Sso , 有一个默认的security 配置类
OAuth2SsoDefaultConfiguration 所以当你用 WebSecurityConfig 继承 WebSecurityConfigurerAdapter
去写 security 的配置类时 , 项目起不起来, 报错原因 @Order 只能有一个 ,这时, 想到的最简单的办法就是 改变 @Order ,但是项目起来之后 发现 配置不生效。。。(目前还不知道什么原因)

其实最后的解决办法很简单,就是把 @EnableOAuth2Sso 放到自己写的配置类上

@EnableOAuth2Sso
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.headers().frameOptions().disable().and().csrf().disable();
        super.configure(http);
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容