Fehler beim Erstellen von Bean mit dem Namen 'org.springframework.security.config.annotation.web.configuration.oAUTH2CliJava

Java-Forum
Anonymous
 Fehler beim Erstellen von Bean mit dem Namen 'org.springframework.security.config.annotation.web.configuration.oAUTH2Cli

Post by Anonymous »

Ich versuche, die Frühlingssicherheitsversion von 6.1.9 auf 6.2.8 zu verbessern.
Ich habe die Änderungen vorgenommen und erstellt ist erfolgreich. Aber wenn ich die Bereitstellung mache, erhalte ich unter dem Fehler. < /p>
SEVERE [main] org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class [org.springframework.web.context.ContextLoaderListener]
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.security.config.annotation.web.configuration.OAuth2ClientConfiguration$OAuth2ClientWebMvcSecurityConfiguration': Unsatisfied dependency expressed through method 'setAuthorizedClientManagerRegistrar' parameter 0: No qualifying bean of type 'org.springframework.security.config.annotation.web.configuration.OAuth2ClientConfiguration$OAuth2AuthorizedClientManagerRegistrar' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: { } < b r / > a t o r g . s p r i n g f r a m e w o r k . b e a n s . f a c t o r y . a n n o t a t i o n . A u t o w i r e d A n n o t a t i o n B e a n P o s t P r o c e s s o r $ A u t o w i r e d M e t h o d E l e m e n t . r e s o l v e M e t h o d A r g u m e n t s ( A u t o w i r e d A n n o t a t i o n B e a n P o s t P r o c e s s o r . j a v a : 8 9 6 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . b e a n s . f a c t o r y . a n n o t a t i o n . A u t o w i r e d A n n o t a t i o n B e a n P o s t P r o c e s s o r $ A u t o w i r e d M e t h o d E l e m e n t . i n j e c t ( A u t o w i r e d A n n o t a t i o n B e a n P o s t P r o c e s s o r . j a v a : 8 4 9 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . b e a n s . f a c t o r y . a n n o t a t i o n . I n j e c t i o n M e t a d a t a . i n j e c t ( I n j e c t i o n M e t a d a t a . j a v a : 1 4 5 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . b e a n s . f a c t o r y . a n n o t a t i o n . A u t o w i r e d A n n o t a t i o n B e a n P o s t P r o c e s s o r . p o s t P r o c e s s P r o p e r t i e s ( A u t o w i r e d A n n o t a t i o n B e a n P o s t P r o c e s s o r . j a v a : 5 0 9 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . b e a n s . f a c t o r y . s u p p o r t . A b s t r a c t A u t o w i r e C a p a b l e B e a n F a c t o r y . p o p u l a t e B e a n ( A b s t r a c t A u t o w i r e C a p a b l e B e a n F a c t o r y . j a v a : 1 4 3 9 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . b e a n s . f a c t o r y . s u p p o r t . A b s t r a c t A u t o w i r e C a p a b l e B e a n F a c t o r y . d o C r e a t e B e a n ( A b s t r a c t A u t o w i r e C a p a b l e B e a n F a c t o r y . j a v a : 5 9 9 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . b e a n s . f a c t o r y . s u p p o r t . A b s t r a c t A u t o w i r e C a p a b l e B e a n F a c t o r y . c r e a t e B e a n ( A b s t r a c t A u t o w i r e C a p a b l e B e a n F a c t o r y . j a v a : 5 2 2 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . b e a n s . f a c t o r y . s u p p o r t . A b s t r a c t B e a n F a c t o r y . l a m b d a $ d o G e t B e a n $ 0 ( A b s t r a c t B e a n F a c t o r y . j a v a : 3 3 7 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . b e a n s . f a c t o r y . s u p p o r t . D e f a u l t S i n g l e t o n B e a n R e g i s t r y . g e t S i n g leton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:975)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:971)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:625)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:394)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:274)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:102)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4019)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4444)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:566)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:653)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1094)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1897)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:123)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1005)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:389)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1593)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:267)

at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:109)
at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:389)
at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:336)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:743)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:771)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1170)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1160)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:716)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:203)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:415)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:866)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
at org.apache.catalina.startup.Catalina.start(Catalina.java:759)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:342)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:470)
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.security.config.annotation.web.configuration.OAuth2ClientConfiguration$OAuth2AuthorizedClientManagerRegistrar' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1889)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1406)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.resolveMethodArguments(AutowiredAnnotationBeanPostProcessor.java:888)
... 56 more
< /code>
Dies ist meine Konfigurationsklasse. < /p>
import java.util.List;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.PriorityOrdered;
import org.springframework.core.annotation.Order;
import org.springframework.security.authentication.ProviderManager;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.oauth2.client.InMemoryOAuth2AuthorizedClientService;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientManager;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProvider;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProviderBuilder;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientService;
import org.springframework.security.oauth2.client.endpoint.DefaultAuthorizationCodeTokenResponseClient;
import org.springframework.security.oauth2.client.endpoint.OAuth2AccessTokenResponseClient;
import org.springframework.security.oauth2.client.endpoint.OAuth2AuthorizationCodeGrantRequest;
import org.springframework.security.oauth2.client.registration.ClientRegistration;
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
import org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository;
import org.springframework.security.oauth2.client.web.AuthenticatedPrincipalOAuth2AuthorizedClientRepository;
import org.springframework.security.oauth2.client.web.AuthorizationRequestRepository;
import org.springframework.security.oauth2.client.web.DefaultOAuth2AuthorizedClientManager;
import org.springframework.security.oauth2.client.web.HttpSessionOAuth2AuthorizationRequestRepository;
import org.springframework.security.oauth2.client.web.OAuth2AuthorizationRequestRedirectFilter;
import org.springframework.security.oauth2.client.web.OAuth2AuthorizedClientRepository;
import org.springframework.security.oauth2.core.AuthorizationGrantType;
import org.springframework.security.oauth2.core.ClientAuthenticationMethod;
import org.springframework.security.oauth2.core.endpoint.OAuth2AuthorizationRequest;

@Configuration
@EnableWebSecurity
public class OAuth2ClientSecurityConfig {

public static final String AUTHORIZATION_REQUEST_BASE_URI = "/protected/login";
@Value("${CLIENT_ID}")
private String clientId;

@Value("${CLIENT_SECRET}")
private String clientSecret;

@Value("${ACCESSTOKEN_URI}")
private String accessTokenUri;

@Value("${oauth2.userAuthorizationUri}")
private String userAuthorizationUri;

@Value("${oauth2.httpsRequired}")
private boolean httpsRequired;

@Value("${oauth2.userInfoUri}")
private String userInfoUri;

@Value("${oauth2.redirectUri}")
private String redirectUri;

@Bean
public ClientRegistrationRepository clientRegistrationRepository() {
return new InMemoryClientRegistrationRepository(List.of(getClientRegistration()));
}

private ClientRegistration getClientRegistration() {
var oAuth2Config=buildOAuth2ProtectedResourceDetailsCustom();
return ClientRegistration.withRegistrationId("abc-oauth")
.clientId(oAuth2Config.getClientId())
.clientSecret(oAuth2Config.getClientSecret())
.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_BASIC)
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
.scope(oAuth2Config.getScope())
.clientName(oAuth2Config.getClientName())
.authorizationUri(oAuth2Config.getUserAuthorizationUri())
.tokenUri(oAuth2Config.getAccessTokenUri())
.userInfoUri(oAuth2Config.getUserInfoUri())
.userNameAttributeName(oAuth2Config.getUserNameAttributeName())
.redirectUri(oAuth2Config.getRedirectUri())
.build();
}

@Bean
public OAuth2ProtectedResourceDetailsCustom buildOAuth2ProtectedResourceDetailsCustom(){
return OAuth2ProtectedResourceDetailsCustom.builder()
.type("authorization_code")
.clientId(clientId)
.clientSecret(clientSecret)
.accessTokenUri(accessTokenUri)
.userAuthorizationUri(userAuthorizationUri)
.httpsRequired(httpsRequired)
.userInfoUri(userInfoUri)
.scope("read")
.clientName("abc")
.redirectUri(redirectUri)
.userNameAttributeName("username")
.build();
}

@Bean
public OAuth2AuthorizedClientService authorizedClientService(ClientRegistrationRepository clientRegistrationRepository) {
return new InMemoryOAuth2AuthorizedClientService(clientRegistrationRepository);
}

@Bean
public OAuth2AuthorizedClientRepository authorizedClientRepository(OAuth2AuthorizedClientService authorizedClientService) {
return new AuthenticatedPrincipalOAuth2AuthorizedClientRepository(authorizedClientService);
}

@Bean
public OAuth2AuthorizedClientManager authorizedClientManager(
ClientRegistrationRepository clientRegistrationRepository,
OAuth2AuthorizedClientRepository authorizedClientRepository) {

OAuth2AuthorizedClientProvider authorizedClientProvider =
OAuth2AuthorizedClientProviderBuilder.builder()
.authorizationCode()
.refreshToken()
.clientCredentials()
.password()
.build();

DefaultOAuth2AuthorizedClientManager authorizedClientManager =
new DefaultOAuth2AuthorizedClientManager(
clientRegistrationRepository, authorizedClientRepository);
authorizedClientManager.setAuthorizedClientProvider(authorizedClientProvider);

return authorizedClientManager;
}

@Bean
public AuthorizationRequestRepository authorizationRequestRepository() {
return new HttpSessionOAuth2AuthorizationRequestRepository();
}

@Bean
public OAuth2AuthorizationRequestRedirectFilter oAuth2AuthorizationRequestRedirectFilter(CustomOAuth2AuthorizationRequestResolver customOAuth2AuthorizationRequestResolver){
return new OAuth2AuthorizationRequestRedirectFilter(customOAuth2AuthorizationRequestResolver);
}

@Bean("customOAuth2AuthorizationRequestResolver")
public CustomOAuth2AuthorizationRequestResolver authorizationRequestResolver(
ClientRegistrationRepository clientRegistrationRepository) {

CustomOAuth2AuthorizationRequestResolver authorizationRequestResolver =
new CustomOAuth2AuthorizationRequestResolver(
clientRegistrationRepository, AUTHORIZATION_REQUEST_BASE_URI);

return authorizationRequestResolver;
}

@Bean("customOAuth2LoginAuthenticationFilter")
@Order(PriorityOrdered.HIGHEST_PRECEDENCE)
public CustomOAuth2LoginAuthenticationFilter customOAuth2LoginAuthenticationFilter(ClientRegistrationRepository clientRegistrationRepository,OAuth2AuthorizedClientRepository authorizedClientRepository,
CustomOAuth2LoginAuthenticationProvider customOAuth2LoginAuthenticationProvider,
RoleBasedAuthenticationSuccessHandler redirectRoleStrategy,OAuthAuthenticationFailureHandler oAuthAuthenticationFailureHandler){
var customOAuth2LoginAuthenticationFilter= new CustomOAuth2LoginAuthenticationFilter(clientRegistrationRepository,authorizedClientRepository,AUTHORIZATION_REQUEST_BASE_URI);
customOAuth2LoginAuthenticationFilter.setAuthenticationManager(new ProviderManager(customOAuth2LoginAuthenticationProvider));

customOAuth2LoginAuthenticationFilter.setAuthenticationSuccessHandler(redirectRoleStrategy);
customOAuth2LoginAuthenticationFilter.setAuthenticationFailureHandler(oAuthAuthenticationFailureHandler);
return customOAuth2LoginAuthenticationFilter;
}

@Bean("customOAuth2LoginAuthenticationProvider")
public CustomOAuth2LoginAuthenticationProvider customOAuth2LoginAuthenticationProvider(
OAuth2AccessTokenResponseClient accessTokenResponseClient,CustomOAuth2UserService customOAuth2UserService){
return new CustomOAuth2LoginAuthenticationProvider(accessTokenResponseClient,customOAuth2UserService);
}

@Bean
public DefaultAuthorizationCodeTokenResponseClient accessTokenResponseClient(){
return new DefaultAuthorizationCodeTokenResponseClient();
}

@Bean
public CustomOAuth2UserService customOAuth2UserService(){
return new CustomOAuth2UserService();
}

@Bean("oAuthAuthenticationFailureHandler")
public OAuthAuthenticationFailureHandler oAuthAuthenticationFailureHandler(){
return new OAuthAuthenticationFailureHandler();
}
}

< /code>
Dies ist mein pom.xml, es enthält auch andere Zeilen. < /p>

org.springframework.security
spring-security-config
6.2.8


org.springframework.security
spring-security-core
6.2.8


org.springframework.security
spring-security-oauth2-client
6.2.8


org.springframework
spring-core
6.1.15

< /code>
Ich habe versucht, Spring Security Starter im POM hinzuzufügen, aber es funktioniert nicht.
für 6.1.9 und SpringFramework 6.1.14. Das System funktioniert gut.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post