背景:
最近项目整体升级, 引入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);
}
}
网友评论