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

问题描述 投票:0回答:1

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

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

默认的身份验证提供程序是一个

ProviderManager
,它会循环检查所有提供程序并获取第一个可能的
Authentication
对象。

这里的问题:在应用

OidcAuthorizationCodeAuthenticationProvider之前检查
OAuth2LoginConfigurer应用OAuth2LoginAuthenticationProvider。导致 OAuth2LoginAuthenticationProvider 首先返回一个 Authentication
 对象(因为两者都支持 
OAuth2LoginAuthenticationToken
)。

这就是为什么我的自定义 OIDC 用户服务从未被调用。我的配置中是否缺少任何内容?

java spring spring-security spring-security-oauth2
1个回答
0
投票
我刚刚错过了为客户端注册设置“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

© www.soinside.com 2019 - 2024. All rights reserved.