我按照Spring Security 5.0官方参考文档和示例代码oauth2login在我的项目中设置OAuth2/OIDC身份验证,但它失败了,当我启动我的应用程序时出现以下异常mvn spring-boot:run.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clientRegistrationRepository'
defined in class path resource [org/springframework/boot/autoconfigure/security/oauth2/client/OAuth2ClientRegistrationRepositoryConfiguration.class]:
Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException:
Failed to instantiate [org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository]:
Factory method 'clientRegistrationRepository' threw exception;
nested exception is java.lang.IllegalArgumentException: authorizationGrantType cannot be null
Run Code Online (Sandbox Code Playgroud)
我用的是由Spring启动提供的默认配置,只是增加了一些基本的依赖关系到项目,如spring-security-config,spring-security-oauth2-client,spring-security-oauth2-jsoe等.
更新:
我找到了原因,对于自定义OAuth2提供程序,例如Gitlab,我必须添加grant type,redirectUritemplate,scope,clientName等,但OpenID Connect规范有一个配置端点协议,例如:https://gitlab.com/ .well-known/openid-configuration,有可能让Spring Security自动读取这些信息吗?