Skip to content

Commit 0137310

Browse files
bcrypt for passwords
1 parent a8a1c48 commit 0137310

File tree

3 files changed

+20
-11
lines changed

3 files changed

+20
-11
lines changed

src/main/java/org/woehlke/greenshop/admin/service/AdministratorServiceImpl.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import org.springframework.security.core.userdetails.UserDetails;
44
import org.springframework.security.core.userdetails.UsernameNotFoundException;
5+
import org.springframework.security.crypto.password.PasswordEncoder;
56
import org.springframework.transaction.annotation.Propagation;
67
import org.springframework.transaction.annotation.Transactional;
78
import org.woehlke.greenshop.admin.entities.Administrator;
@@ -24,6 +25,9 @@ public class AdministratorServiceImpl implements AdministratorService {
2425
@Inject
2526
private AdministratorRepository administratorRepository;
2627

28+
@Inject
29+
private PasswordEncoder encoder;
30+
2731
@Override
2832
public List<Administrator> findAllAdministrators() {
2933
return administratorRepository.findAll();
@@ -39,15 +43,15 @@ public Administrator findAdministratorById(long administratorId) {
3943
public void update(Administrator thisAdministrator) {
4044
Administrator original = administratorRepository.findOne(thisAdministrator.getId());
4145
if(original.getUserPassword().compareTo(thisAdministrator.getUserPassword())!=0){
42-
thisAdministrator.setUserPassword(md5(thisAdministrator.getUserPassword()));
46+
thisAdministrator.setUserPassword(encoder.encode(thisAdministrator.getUserPassword()));
4347
}
4448
thisAdministrator = administratorRepository.save(thisAdministrator);
4549
}
4650

4751
@Override
4852
@Transactional(readOnly=false,propagation=Propagation.REQUIRES_NEW)
4953
public void create(Administrator thisAdministrator) {
50-
thisAdministrator.setUserPassword(md5(thisAdministrator.getUserPassword()));
54+
thisAdministrator.setUserPassword(encoder.encode(thisAdministrator.getUserPassword()));
5155
thisAdministrator = administratorRepository.save(thisAdministrator);
5256
}
5357

@@ -64,6 +68,7 @@ public UserDetails loadUserByUsername(String username) throws UsernameNotFoundEx
6468
return new AdministratorBean(administrator);
6569
}
6670

71+
/*
6772
private String md5(String input){
6873
MessageDigest md = null;
6974
try {
@@ -79,4 +84,5 @@ private String md5(String input){
7984
}
8085
return sb.toString();
8186
}
87+
*/
8288
}

src/main/java/org/woehlke/greenshop/customer/CustomerServiceImpl.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,9 @@
99

1010
import org.slf4j.Logger;
1111
import org.slf4j.LoggerFactory;
12-
import org.springframework.data.domain.Sort;
13-
import org.springframework.security.authentication.encoding.Md5PasswordEncoder;
14-
import org.springframework.security.authentication.encoding.PasswordEncoder;
1512
import org.springframework.security.core.userdetails.UserDetails;
1613
import org.springframework.security.core.userdetails.UsernameNotFoundException;
14+
import org.springframework.security.crypto.password.PasswordEncoder;
1715
import org.springframework.transaction.annotation.Propagation;
1816
import org.springframework.transaction.annotation.Transactional;
1917
import org.woehlke.greenshop.catalog.entities.Language;
@@ -66,8 +64,10 @@ public class CustomerServiceImpl implements CustomerService {
6664
@Inject
6765
private ReviewRepository reviewRepository;
6866

67+
@Inject
68+
private PasswordEncoder encoder;
6969

70-
@Override
70+
@Override
7171
@Transactional(readOnly=false,propagation=Propagation.REQUIRES_NEW)
7272
public void createNewCustomer(
7373
CreateNewCustomerFormBean createNewCustomerFormBean) {
@@ -114,9 +114,7 @@ private Customer createNewCustomerFormBean2Customer(CreateNewCustomerFormBean cr
114114
customer.setGender(createNewCustomerFormBean.getGender());
115115
customer.setLastname(createNewCustomerFormBean.getLastname());
116116
customer.setNewsletter(createNewCustomerFormBean.getNewsletter());
117-
//TODO: password encryption like in PHP
118-
PasswordEncoder encoder = new Md5PasswordEncoder();
119-
String codedPassword = encoder.encodePassword(createNewCustomerFormBean.getPassword(),null);
117+
String codedPassword = encoder.encode(createNewCustomerFormBean.getPassword());
120118
customer.setPassword(codedPassword);
121119
customer.setTelephone(createNewCustomerFormBean.getTelephone());
122120
return customer;

src/main/resources/security-context.xml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,15 +75,20 @@
7575
<security:custom-filter before="FORM_LOGIN_FILTER" ref="authenticationFilterCustomer" />
7676
</security:http>
7777

78+
<!-- https://www.dailycred.com/article/bcrypt-calculator -->
79+
<bean id="encoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder">
80+
<constructor-arg name="strength" value="10" />
81+
</bean>
82+
7883
<security:authentication-manager alias="authenticationManagerAdmin">
7984
<security:authentication-provider user-service-ref="administratorService">
80-
<security:password-encoder hash="md5"/>
85+
<security:password-encoder ref="encoder"/>
8186
</security:authentication-provider>
8287
</security:authentication-manager>
8388

8489
<security:authentication-manager id="authenticationManagerCustomer">
8590
<security:authentication-provider user-service-ref="customerService">
86-
<security:password-encoder hash="md5"/>
91+
<security:password-encoder ref="encoder"/>
8792
</security:authentication-provider>
8893
</security:authentication-manager>
8994

0 commit comments

Comments
 (0)