I am trying out spring security for the first time but for some reason the authentication mechanism I have wrote is not firing -
Tech used - Spring 4.2.1, spring-security, jetty container, jersey and couchbase DB
SecurityConfig.java -
@Configuration
@EnableWebSecurity
@ComponentScan(basePackageClasses={UserRepository.class, MyUserDetailService.class})
public class SecurityConfig extends WebSecurityConfigurerAdapter{
@Autowired
@Qualifier("userDetailsService")
UserDetailsService userDetailsService;
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.and()
.httpBasic();
// For later
//
// http.authorizeRequests().antMatchers("/*")
// .access("hasRole('ROLE_ADMIN')");
}
@Bean
public PasswordEncoder passwordEncoder(){
PasswordEncoder encoder = new BCryptPasswordEncoder();
return encoder;
}
SecurityWebAppInitializer.java -
public class SecurityWebApplicationInitializer
extends AbstractSecurityWebApplicationInitializer {
public SecurityWebApplicationInitializer() {
super(SecurityConfig.class);
}
}
UserDetailService.java -
@Service("userDetailsService")
public class MyUserDetailService extends BaseServiceImpl<com.scoolboard.rest.entity.User, String> implements UserDetailsService {
@Autowired
private UserRepository userRepository;
protected UserRepository getRepository() {
return userRepository;
}
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
com.scoolboard.rest.entity.User user = getRepository().findByUserEmail(username);
List<GrantedAuthority> authorities = buildUserAuthority(new HashSet<UserRole>(user.getUserRole()));
return buildUserForAuthentication(user, authorities);
}
// Converts com.mkyong.users.model.User user to
// org.springframework.security.core.userdetails.User
private User buildUserForAuthentication(com.scoolboard.rest.entity.User user,
List<GrantedAuthority> authorities) {
return new User(user.getEmail(), user.getPassword(),
user.isEnabled(), true, true, true, authorities);
}
private List<GrantedAuthority> buildUserAuthority(Set<UserRole> userRoles) {
Set<GrantedAuthority> setAuths = new HashSet<GrantedAuthority>();
// Build user's authorities
for (UserRole userRole : userRoles) {
setAuths.add(new SimpleGrantedAuthority(userRole.getRole()));
}
List<GrantedAuthority> result = new ArrayList<GrantedAuthority>(setAuths);
return result;
}
}
What am I missing over here.