Spring Security自定义OIDC用户服务永远不会被调用

epggiuax  于 2023-10-20  发布在  Spring
关注(0)|答案(1)|浏览(131)

使用Spring Security 5.8.5(w/o Boot )我无法进入自定义OIDC用户服务。这是我当前的配置:

http.oauth2Login(oauth2 -> oauth2
  .userInfoEndpoint(userInfo -> userInfo.oidcUserService(myCustomOidcUserService)));

默认的身份验证提供者是一个ProviderManager,它在一个循环中检查所有提供者,并获取第一个可能的Authentication对象。
这里的问题是:检查OAuth2LoginConfigurer在应用OidcAuthorizationCodeAuthenticationProvider之前应用OAuth2 LoginAuthenticationProvider。导致OAuth2 LoginAuthenticationProvider首先返回Authentication对象(因为两者都支持OAuth2LoginAuthenticationToken)。
这就是为什么我的定制OIDC用户服务从来没有被调用。我的配置里有什么遗漏吗?

dffbzjpn

dffbzjpn1#

我刚刚错过了为客户端注册设置“openid”范围。如本文所述:https://github.com/spring-projects/spring-security/blob/5.8.5/oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/authentication/OAuth2LoginAuthenticationProvider.java#L95-L103

相关问题