错误 在插件 OAuth2 的类路径资源中定义了名称为"springSecurityFilterChain"的 Bean 定义无效



我有应用程序Java11春季启动与CRUD api工作发现,我试图添加OpenId连接插头消费,我在我的bean上有错误。

org.springframework.beans.factory.support。BeanDefinitionOverrideException:在类路径资源[com/mypackage/hexa/application/OAuth2SecurityConfig.class]中定义名为'springSecurityFilterChain'的无效bean定义:无法注册bean定义[根bean:类[null];范围=;摘要= false;lazyInit =零;autowireMode = 3;dependencyCheck = 0;autowireCandidate = true;主要= false;factoryBeanName = OAuth2SecurityConfig;factoryMethodName = springSecurityFilterChain;initMethodName =零;destroyMethodName =(推断);定义在类路径资源[com/mypackage/hexa/application/OAuth2SecurityConfig.class]]为bean 'springSecurityFilterChain':已经有[根bean:类[null];范围=;摘要= false;lazyInit =零;autowireMode = 3;dependencyCheck = 0;autowireCandidate = true;主要= false;factoryBeanName = org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration;factoryMethodName = springSecurityFilterChain;initMethodName =零;destroyMethodName =(推断);定义在类路径资源[/springframework/security/config/annotation/web/configuration/websecurityconfiguration .class]] bound.

@Configuration
@EnableWebSecurity
public class OAuth2SecurityConfig {
@Bean
SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
http
.authorizeExchange(exchanges ->
exchanges
.pathMatchers("/", "/error").permitAll()
.anyExchange().authenticated()
)
.oauth2Login((Customizer<ServerHttpSecurity.OAuth2LoginSpec>) withDefaults());
return http.build();
}
}
@Controller
public class UserController {
@GetMapping("/")
public String index(){
return "index";
}
@GetMapping("/user")
public String user(Model model,
@AuthenticationPrincipal OidcUser oidcUser) {
model.addAttribute("userName", oidcUser.getName());
model.addAttribute("audience", oidcUser.getAudience());
return "user";
}
}

org.springframework.beans.factory。UnsatisfiedDependencyException:创建名为"org.springframework.security.config.annotation.web.configuration"的bean时出错。WebSecurityConfiguration':通过方法'setFilterChains'参数0表示不满意的依赖;在类路径资源[/springframework/boot/autoconfigure/security/oauth2/client/servlet/oauth2websecurityconfiguration $OAuth2SecurityFilterChainConfiguration.class]中创建名为'oauth2SecurityFilterChain'的bean时出错:通过工厂方法实例化bean失败;org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.security.web]。:工厂方法oauth2SecurityFilterChain抛出异常;在类路径资源[/springframework/boot/autoconfigure/security/oauth2/client/servlet/oauth2clientregistrationrepositoryconfiguration .class]中定义名称为'clientRegistrationRepository'的bean时出错:通过工厂方法实例化bean失败;嵌套异常是org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.security.oauth2.client.registration]。工厂方法'clientRegistrationRepository'抛出异常;嵌套异常是java.lang.IllegalArgumentException:无法解析与"https://idsvr.example.com/oauth/v2/oauth-anonymous">

提供的发行者的配置

您正在尝试覆盖bean,但它在默认情况下未启用。

Setspring.main.allow-bean-definition-overriding=true

或如果您使用yml配置,

spring:
main:
allow-bean-definition-overriding: true

重新启用覆盖。

注意:从Spring Boot 2.1开始,必须启用Bean重写,

https://github.com/spring - projects/spring boot/wiki/spring -引导- 2.1 -释放-指出

最新更新