org.springframework.beans.factory.UnsatisfiedDependencyException:
Ошибка создания компонента с именем authorizationServerConfig: неудовлетворен
зависимость выражается через поле «authenticationManager»; вложенными
исключение
org.springframework.beans.factory.NoSuchBeanDefinitionException: нет
квалифицирующий боб типа
'Org.springframework.security.authentication.AuthenticationManager'
доступно: ожидается по крайней мере 1 бин, который квалифицируется как autowire
кандидат. Аннотации зависимостей:
{@ Org.springframework.beans.factory.annotation.Autowired (обязательно = истина)}
Привет, у меня есть весеннее загрузочное веб-приложение, и я пытаюсь внедрить систему аутентификации входа / авторизации с использованием Spring Security и OAuth2, следуя этому примеру: https://www.youtube.com/watch?v=dTAgI_UsqMg&t=1307s
Все было хорошо, но когда я запускаю свое приложение, я получаю исключение, в котором говорится, что оно не может + найти бин для AuthenticationManager, даже если он думал, что оно есть и автоматически подключено.
Просматривая Интернет, это похоже на известную или распространенную проблему с Oauth2, но я не могу найти правильный обходной путь
Некоторые люди предлагали «выставить» bean-компонент AuthenticationManager, я не уверен, что это означает в этом контексте
Это ссылка на мой текущий проект на github: https://github.com/chenchi13/spring-boot-cms
Может кто-нибудь помочь мне понять это?
класс, выдающий исключение:
@EnableResourceServer
@Configuration
public class ResourceServerConfig extends WebSecurityConfigurerAdapter {
@Autowired
private AuthenticationManager authenticationManager;
@Autowired
private UserDetailsService customUserDetailService;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.requestMatchers()
.antMatchers("/login", "/oauth/authorize")
.and()
.authorizeRequests()
.anyRequest()
.authenticated()
.and()
.formLogin()
.permitAll();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
//auth.parentAuthenticationManager(authenticationManager)
// .inMemoryAuthentication()
// .withUser("Peter")
// .password("peter")
// .roles("USER");
auth.parentAuthenticationManager(authenticationManager)
.userDetailsService(customUserDetailService);
}
}
Конфигурация сервера авторизации:
@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {
@Autowired
private AuthenticationManager authenticationManager;
@Override
public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {
security.tokenKeyAccess("permitAll()")
.checkTokenAccess("isAuthenticated()");
}
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients
.inMemory()
.withClient("ClientId")
.secret("secret")
.authorizedGrantTypes("authorization_code")
.scopes("user_info")
.autoApprove(true);
}
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints.authenticationManager(authenticationManager);
}
}