до сих пор я использовал области безопасности для аутентификации и авторизации пользователей. Тем не менее, я хотел бы перейти к структуре Spring Security, желательно не использовать другие части Spring Framework. Мне удалось настроить аутентификацию на основе httpBasic в памяти, которая отлично работает.Настроить Spring Security с помощью EJB
Теперь я хотел бы создать пользовательский UserDetailsService, реализующий мою собственную авторизацию. My UserDetailsService-Реализация - это автономный EJB, который я не могу ввести в SecurityConfig, получив ошибку Что я могу сделать, чтобы заставить это работать?
Спасибо!
Это моя единственная конфигурация до сих пор:
public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer {
public SecurityWebApplicationInitializer() {
super(SecurityConfig.class);
}
}
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("password").roles("USER");
}
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.httpBasic();
}
}
@Stateless
public class UserDetailsImpl implements UserDetailsService {
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
//No Implementation yet
return null;
}
}
EDIT:
Я изменил свое UserDetailsServiceImpl от @Stateless к @Service и Autowired его в SecurityConfig. Кроме того, я аннотировал SecurityConfig с
@Configuration
@ComponentScan(basePackageClasses = {UserDetailsServiceImpl.class})
так, чтобы он мог найти реализацию. Однако проблема IST инъекционного мой Stateless службы в UserDetailsService вызывает следующую ошибку:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [de.tobias.carsharing.security.SecurityService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.ejb.EJB(name=, lookup=, description=, beanName=, beanInterface=class java.lang.Object, mappedName=)}
Да, что работает, но не мой фактический problem.As только пытаюсь внедрить в EJB Я получаю следующую ошибку: никакой квалификационный компонент типа [SecurityService], найденный для зависимости: ожидается как минимум 1 компонент, который квалифицируется как кандидат на автоподключение для этой зависимости – Henry
Я отредактировал свое сообщение с дополнительной информацией. Спасибо, пока! – Henry
Да, это не сработает, вы не можете смешать весну и управляемые EJB бобы. Возможно, этот вопрос поможет вам, если вы не найдете решение уже http://stackoverflow.com/questions/12963405/injecting-ejb-3-into-spring-bean – Kajo