Skip to content

Commit cf4bd31

Browse files
added DAO Auth Provider and related classes
1 parent 00bff39 commit cf4bd31

File tree

11 files changed

+266
-0
lines changed

11 files changed

+266
-0
lines changed

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,11 @@
7373
<version>1.9.2</version>
7474
</dependency>
7575

76+
<dependency>
77+
<groupId>org.jasypt</groupId>
78+
<artifactId>jasypt-springsecurity3</artifactId>
79+
<version>1.9.2</version>
80+
</dependency>
7681

7782
<dependency>
7883
<groupId>org.springframework.boot</groupId>

src/main/java/guru/springframework/config/SpringSecConfig.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,54 @@
11
package guru.springframework.config;
22

3+
import org.jasypt.springsecurity3.authentication.encoding.PasswordEncoder;
4+
import org.jasypt.util.password.StrongPasswordEncryptor;
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.beans.factory.annotation.Qualifier;
7+
import org.springframework.context.annotation.Bean;
38
import org.springframework.context.annotation.Configuration;
9+
import org.springframework.security.authentication.AuthenticationProvider;
10+
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
11+
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
412
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
513
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
14+
import org.springframework.security.core.userdetails.UserDetailsService;
615

716
/**
817
* Created by jt on 12/28/15.
918
*/
1019
@Configuration
1120
public class SpringSecConfig extends WebSecurityConfigurerAdapter {
1221

22+
private AuthenticationProvider authenticationProvider;
23+
24+
@Autowired
25+
@Qualifier("daoAuthenticationProvider")
26+
public void setAuthenticationProvider(AuthenticationProvider authenticationProvider) {
27+
this.authenticationProvider = authenticationProvider;
28+
}
29+
30+
@Bean
31+
public PasswordEncoder passwordEncoder(StrongPasswordEncryptor passwordEncryptor){
32+
PasswordEncoder passwordEncoder = new PasswordEncoder();
33+
passwordEncoder.setPasswordEncryptor(passwordEncryptor);
34+
return passwordEncoder;
35+
}
36+
37+
@Bean
38+
public DaoAuthenticationProvider daoAuthenticationProvider(PasswordEncoder passwordEncoder,
39+
UserDetailsService userDetailsService){
40+
41+
DaoAuthenticationProvider daoAuthenticationProvider = new DaoAuthenticationProvider();
42+
daoAuthenticationProvider.setPasswordEncoder(passwordEncoder);
43+
daoAuthenticationProvider.setUserDetailsService(userDetailsService);
44+
return daoAuthenticationProvider;
45+
}
46+
47+
@Autowired
48+
public void configureAuthManager(AuthenticationManagerBuilder authenticationManagerBuilder){
49+
authenticationManagerBuilder.authenticationProvider(authenticationProvider);
50+
}
51+
1352
@Override
1453
protected void configure(HttpSecurity http) throws Exception {
1554
http.authorizeRequests().antMatchers("/").permitAll();
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package guru.springframework.converters;
2+
3+
import guru.springframework.domain.User;
4+
import guru.springframework.services.security.UserDetailsImpl;
5+
import org.springframework.core.convert.converter.Converter;
6+
import org.springframework.security.core.authority.SimpleGrantedAuthority;
7+
import org.springframework.security.core.userdetails.UserDetails;
8+
import org.springframework.stereotype.Component;
9+
10+
import java.util.ArrayList;
11+
import java.util.Collection;
12+
13+
/**
14+
* Created by jt on 12/29/15.
15+
*/
16+
@Component
17+
public class UserToUserDetails implements Converter<User, UserDetails> {
18+
@Override
19+
public UserDetails convert(User user) {
20+
UserDetailsImpl userDetails = new UserDetailsImpl();
21+
userDetails.setUsername(user.getUsername());
22+
userDetails.setPassword(user.getEncryptedPassword());
23+
userDetails.setEnabled(user.getEnabled());
24+
25+
Collection<SimpleGrantedAuthority> authorities = new ArrayList<>();
26+
27+
user.getRoles().forEach(role -> {
28+
authorities.add(new SimpleGrantedAuthority(role.getRole()));
29+
});
30+
31+
userDetails.setAuthorities(authorities);
32+
33+
return userDetails;
34+
}
35+
}

src/main/java/guru/springframework/repositories/UserRepository.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@
77
* Created by jt on 12/21/15.
88
*/
99
public interface UserRepository extends CrudRepository<User, Integer> {
10+
11+
User findByUsername(String username);
1012
}

src/main/java/guru/springframework/services/UserService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@
77
*/
88
public interface UserService extends CRUDService<User> {
99

10+
User findByUserName(String userName);
11+
1012
}

src/main/java/guru/springframework/services/jpaservices/UserServiceJpaDaoImpl.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,11 @@ public void delete(Integer id) {
6262
em.remove(em.find(User.class, id));
6363
em.getTransaction().commit();
6464
}
65+
66+
@Override
67+
public User findByUserName(String userName) {
68+
EntityManager em = emf.createEntityManager();
69+
70+
return em.createQuery("from User where username = :userName", User.class).getSingleResult();
71+
}
6572
}

src/main/java/guru/springframework/services/mapservices/UserServiceMapImpl.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import org.springframework.stereotype.Service;
88

99
import java.util.List;
10+
import java.util.Optional;
11+
import java.util.function.Predicate;
1012

1113
/**
1214
* Created by jt on 12/14/15.
@@ -34,4 +36,18 @@ public User saveOrUpdate(User domainObject) {
3436
public void delete(Integer id) {
3537
super.delete(id);
3638
}
39+
40+
@Override
41+
public User findByUserName(String userName) {
42+
43+
Optional returnUser = domainMap.values().stream().filter(new Predicate<DomainObject>() {
44+
@Override
45+
public boolean test(DomainObject domainObject) {
46+
User user = (User) domainObject;
47+
return user.getUsername().equalsIgnoreCase(userName);
48+
}
49+
}).findFirst();
50+
51+
return (User) returnUser.get();
52+
}
3753
}

src/main/java/guru/springframework/services/reposervices/UserServiceRepoImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,9 @@ public User saveOrUpdate(User domainObject) {
4545
public void delete(Integer id) {
4646
userRepository.delete(id);
4747
}
48+
49+
@Override
50+
public User findByUserName(String userName) {
51+
return userRepository.findByUsername(userName);
52+
}
4853
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package guru.springframework.services.security;
2+
3+
import guru.springframework.domain.User;
4+
import guru.springframework.services.UserService;
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.beans.factory.annotation.Qualifier;
7+
import org.springframework.core.convert.converter.Converter;
8+
import org.springframework.security.core.userdetails.UserDetails;
9+
import org.springframework.security.core.userdetails.UserDetailsService;
10+
import org.springframework.security.core.userdetails.UsernameNotFoundException;
11+
import org.springframework.stereotype.Service;
12+
13+
/**
14+
* Created by jt on 12/28/15.
15+
*/
16+
@Service("userDetailsService")
17+
public class SpringSecUserDetailsServiceImpl implements UserDetailsService {
18+
19+
private UserService userService;
20+
private Converter<User, UserDetails> userUserDetailsConverter;
21+
22+
@Autowired
23+
public void setUserService(UserService userService) {
24+
this.userService = userService;
25+
}
26+
27+
@Autowired
28+
@Qualifier(value = "userToUserDetails")
29+
public void setUserUserDetailsConverter(Converter<User, UserDetails> userUserDetailsConverter) {
30+
this.userUserDetailsConverter = userUserDetailsConverter;
31+
}
32+
33+
@Override
34+
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
35+
36+
return userUserDetailsConverter.convert(userService.findByUserName(username));
37+
}
38+
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package guru.springframework.services.security;
2+
3+
import org.springframework.security.core.GrantedAuthority;
4+
import org.springframework.security.core.authority.SimpleGrantedAuthority;
5+
import org.springframework.security.core.userdetails.UserDetails;
6+
7+
import java.util.Collection;
8+
9+
/**
10+
* Created by jt on 12/28/15.
11+
*/
12+
public class UserDetailsImpl implements UserDetails {
13+
14+
private Collection<SimpleGrantedAuthority> authorities;
15+
private String username;
16+
private String password;
17+
private Boolean enabled;
18+
19+
public void setAuthorities(Collection<SimpleGrantedAuthority> authorities) {
20+
this.authorities = authorities;
21+
}
22+
23+
public void setUsername(String username) {
24+
this.username = username;
25+
}
26+
27+
public void setPassword(String password) {
28+
this.password = password;
29+
}
30+
31+
public void setEnabled(Boolean enabled) {
32+
this.enabled = enabled;
33+
}
34+
35+
@Override
36+
public Collection<? extends GrantedAuthority> getAuthorities() {
37+
return authorities;
38+
}
39+
40+
@Override
41+
public String getPassword() {
42+
return password;
43+
}
44+
45+
@Override
46+
public String getUsername() {
47+
return username;
48+
}
49+
50+
@Override
51+
public boolean isAccountNonExpired() {
52+
return true;
53+
}
54+
55+
@Override
56+
public boolean isAccountNonLocked() {
57+
return true;
58+
}
59+
60+
@Override
61+
public boolean isCredentialsNonExpired() {
62+
return true;
63+
}
64+
65+
@Override
66+
public boolean isEnabled() {
67+
return enabled;
68+
}
69+
70+
71+
}

0 commit comments

Comments
 (0)