如何解决springboot2集成oauth2踩坑的问题
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,如何解决springboot2集成oauth2踩坑的问题,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。刚开始用springboot1.5
千家信息网最后更新 2025年12月02日如何解决springboot2集成oauth2踩坑的问题
如何解决springboot2集成oauth2踩坑的问题,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
刚开始用springboot1.5集成oauth3没问题,现在升级成springboot2.1踩了不少坑,下面列举下:
问题一
Possible CSRF detected - state parameter was required but no state could be found
客户端代码
@EnableOAuth3Sso@Configurationpublic class UiSecurityConfig extends WebSecurityConfigurerAdapter { @Override public void configure(HttpSecurity http) throws Exception { http.antMatcher("/**") .authorizeRequests() .antMatchers("/", "/login**") .permitAll() .anyRequest() .authenticated(); }}在获取到code后一直停留在登陆页面上 在网上找了下有以下方案: 1、配置server.servlet.session.cookie.name=UPSESSIONID 但是这个试了没效果 2、设置code策略authCodeProvider.setStateMandatory(false); 这里改动了很多代码
@Configuration@EnableOAuth3Client@EnableGlobalMethodSecurity(prePostEnabled=true)//开启@PreAuthorize注解public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private OAuth3ClientContext oauth3ClientContext; @Override protected void configure(HttpSecurity http) throws Exception {// // @formatter:off http.authorizeRequests() .anyRequest().authenticated().and() .formLogin().loginPage("/login").permitAll().and() .exceptionHandling().and() .logout().logoutSuccessUrl("/login").permitAll() .and().headers().frameOptions().sameOrigin() .and().csrf() .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()).and() .addFilterBefore(ssoFilter(), BasicAuthenticationFilter.class);//这里需要配置在basic前 } @Bean public FilterRegistrationBean oauth3ClientFilterRegistration(OAuth3ClientContextFilter filter) { FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setFilter(filter); registration.setOrder(-100); return registration; } @Bean @ConfigurationProperties("security.oauth3") public ClientResources trina() { return new ClientResources(); } private Filter ssoFilter() { CompositeFilter filter = new CompositeFilter(); List filters = new ArrayList(); filters.add(ssoFilter(trina(), "/login")); filter.setFilters(filters); return filter; } private Filter ssoFilter(ClientResources client, String path) { OAuth3ClientAuthenticationProcessingFilter oAuth3ClientAuthenticationFilter = new OAuth3ClientAuthenticationProcessingFilter( path); OAuth3RestTemplate oAuth3RestTemplate = new OAuth3RestTemplate(client.getClient(), this.oauth3ClientContext); oAuth3ClientAuthenticationFilter.setRestTemplate(oAuth3RestTemplate); AuthorizationCodeAccessTokenProvider authCodeProvider = new AuthorizationCodeAccessTokenProvider(); authCodeProvider.setStateMandatory(false); AccessTokenProviderChain provider = new AccessTokenProviderChain( Arrays.asList(authCodeProvider)); oAuth3RestTemplate.setAccessTokenProvider(provider); UserInfoTokenServices tokenServices = new UserInfoTokenServices(client.getResource().getUserInfoUri(), client.getClient().getClientId()); tokenServices.setRestTemplate(oAuth3RestTemplate); oAuth3ClientAuthenticationFilter.setTokenServices(tokenServices); return oAuth3ClientAuthenticationFilter; }}class ClientResources { @NestedConfigurationProperty private AuthorizationCodeResourceDetails client = new AuthorizationCodeResourceDetails(); @NestedConfigurationProperty private ResourceServerProperties resource = new ResourceServerProperties(); public AuthorizationCodeResourceDetails getClient() { return client; } public ResourceServerProperties getResource() { return resource; }} 修改后访问呢连接,登陆后成功跳转到指定页面。
看完上述内容,你们掌握如何解决springboot2集成oauth2踩坑的问题的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
问题
代码
内容
方法
更多
页面
登陆
配置
束手无策
为此
下有
原因
客户
客户端
对此
技能
效果
方案
注解
策略
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
赞美软件开发工程师
百万网民学法律网络安全法答案
网络安全知识小视频 苗头
万州民宿软件开发
满洲里数据库修复
网络安全设施包括哪些
mssql查看数据库
配置服务器主机要什么要求
计算机网络技术怎样月入过万
网络安全信息监督管理
网络安全整改目标及措施
软件开发模式瀑布敏捷
华为自己生产服务器内存吗
汽车行业软件开发书籍
服务器的安全策略关掉
谁的网络安全技术好
舟山新区软件开发定制
知域互联网科技有限公司官网
服务器数据集怎么更新
网络安全运维岗位风险
网络安全法中的网络数据是指
电脑带网络安全模式怎么解除
永川区工商软件开发流程价目表
网络安全设施包括哪些
房山回收二手服务器估价
提供基础数据库
网络安全法 智联招聘
数据库最大的字段范围
sqllite 数据库备份
免费全推服务器