使用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用户服务从来没有被调用。我的配置里有什么遗漏吗?
1条答案
按热度按时间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