Spring Security OAuth登录报错[invalid_user_info_response]排查求助
Spring Boot 2.7.9升级后OAuth登录抛出
invalid_user_info_response异常 我接手了一个基于Spring Boot & Spring Security实现OAuth登录的应用,使用有效凭据登录时抛出如下异常:
org.springframework.security.oauth2.core.OAuth2AuthenticationException: [invalid_user_info_response] at org.springframework.security.oauth2.client.oidc.userinfo.OidcUserService.loadUser(OidcUserService.java:127) at org.springframework.security.oauth2.client.oidc.userinfo.OidcUserService.loadUser(OidcUserService.java:66) at org.springframework.security.oauth2.client.oidc.authentication.OidcAuthorizationCodeAuthenticationProvider.authenticate(OidcAuthorizationCodeAuthenticationProvider.java:156) at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:182) at org.springframework.security.oauth2.client.web.OAuth2LoginAuthenticationFilter.attemptAuthentication(OAuth2LoginAuthenticationFilter.java:195) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:227) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:217) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ...
该异常由OidcUserService.loadUser方法抛出,触发条件为:
if (!userInfo.getSubject().equals(userRequest.getIdToken().getSubject()))
调试后发现:
userInfo.getSubject()返回格式为CORPO\MyUsername(MyUsername为实际登录用户名)userRequest.getIdToken().getSubject()返回8位数字(如12345678)
二者不匹配导致异常。同时注意到userInfo中存在名为ssouid的声明,其值与idToken的subject完全一致。
当前应用使用Spring Boot 2.7.9及spring-security-oauth2-client 5.7.7。
补充说明:此前部署版本使用Spring Boot 2.4.4可正常运行,因此该错误必然是升级到2.7.9导致的。
请问这是配置问题还是OAuth服务器与应用的兼容性问题?
内容的提问来源于stack exchange,提问作者Jardo
相关产品推荐
相关产品推荐

