diff --git a/spring-5-security/pom.xml b/spring-5-security/pom.xml
index 0a1d1f5df0..ffe6865704 100644
--- a/spring-5-security/pom.xml
+++ b/spring-5-security/pom.xml
@@ -12,7 +12,7 @@
org.springframework.boot
spring-boot-starter-parent
- 2.0.0.M7
+ 2.0.0.RC2
diff --git a/spring-5-security/src/main/java/com/baeldung/passwordstorage/BaeldungPasswordEncoderSetup.java b/spring-5-security/src/main/java/com/baeldung/passwordstorage/BaeldungPasswordEncoderSetup.java
index 94edf85631..94987029db 100644
--- a/spring-5-security/src/main/java/com/baeldung/passwordstorage/BaeldungPasswordEncoderSetup.java
+++ b/spring-5-security/src/main/java/com/baeldung/passwordstorage/BaeldungPasswordEncoderSetup.java
@@ -2,12 +2,9 @@ package com.baeldung.passwordstorage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.security.authentication.AuthenticationEventPublisher;
-import org.springframework.security.authentication.DefaultAuthenticationEventPublisher;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.authentication.event.AuthenticationSuccessEvent;
import org.springframework.security.core.Authentication;
@@ -18,23 +15,20 @@ public class BaeldungPasswordEncoderSetup {
private final static Logger LOG = LoggerFactory.getLogger(BaeldungPasswordEncoderSetup.class);
- @Bean
- public AuthenticationEventPublisher authenticationEventPublisher(final ApplicationEventPublisher publisher) {
- return new DefaultAuthenticationEventPublisher(publisher);
- }
-
@Bean
public ApplicationListener authenticationSuccessListener(final PasswordEncoder encoder) {
+
return (AuthenticationSuccessEvent event) -> {
- final Authentication authentication = event.getAuthentication();
+ final Authentication auth = event.getAuthentication();
- if (authentication instanceof UsernamePasswordAuthenticationToken && authentication.getCredentials() != null) {
- final CharSequence clearTextPassword = (CharSequence) authentication.getCredentials(); // 1
- final String newPasswordHash = encoder.encode(clearTextPassword); // 2
+ if (auth instanceof UsernamePasswordAuthenticationToken && auth.getCredentials() != null) {
- LOG.info("New password hash {} for user {}", newPasswordHash, authentication.getName());
+ final CharSequence clearTextPass = (CharSequence) auth.getCredentials(); // 1
+ final String newPasswordHash = encoder.encode(clearTextPass); // 2
- ((UsernamePasswordAuthenticationToken) authentication).eraseCredentials(); // 3
+ LOG.info("New password hash {} for user {}", newPasswordHash, auth.getName());
+
+ ((UsernamePasswordAuthenticationToken) auth).eraseCredentials(); // 3
}
};
}
diff --git a/spring-5-security/src/main/java/com/baeldung/passwordstorage/PasswordStorageWebSecurityConfigurer.java b/spring-5-security/src/main/java/com/baeldung/passwordstorage/PasswordStorageWebSecurityConfigurer.java
index 0773de4bd6..22ef2f0835 100644
--- a/spring-5-security/src/main/java/com/baeldung/passwordstorage/PasswordStorageWebSecurityConfigurer.java
+++ b/spring-5-security/src/main/java/com/baeldung/passwordstorage/PasswordStorageWebSecurityConfigurer.java
@@ -1,54 +1,53 @@
package com.baeldung.passwordstorage;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.security.authentication.AuthenticationEventPublisher;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.DelegatingPasswordEncoder;
-import org.springframework.security.crypto.password.MessageDigestPasswordEncoder;
+import org.springframework.security.crypto.password.NoOpPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.security.crypto.password.StandardPasswordEncoder;
import org.springframework.security.crypto.scrypt.SCryptPasswordEncoder;
+import org.springframework.security.provisioning.InMemoryUserDetailsManager;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@Configuration
public class PasswordStorageWebSecurityConfigurer extends WebSecurityConfigurerAdapter {
- private final AuthenticationEventPublisher eventPublisher;
- private final UserDetailsService userDetailsService;
-
- @Autowired
- public PasswordStorageWebSecurityConfigurer(AuthenticationEventPublisher eventPublisher, UserDetailsService userDetailsService) {
- this.eventPublisher = eventPublisher;
- this.userDetailsService = userDetailsService;
- }
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.eraseCredentials(false) // 4
- .authenticationEventPublisher(eventPublisher)
- .userDetailsService(userDetailsService)
+ .userDetailsService(getUserDefaultDetailsService())
.passwordEncoder(passwordEncoder());
}
+ @Bean
+ public UserDetailsService getUserDefaultDetailsService() {
+ User testUser = new User("baeldung", "{noop}SpringSecurity5", Collections.emptyList());
+ return new InMemoryUserDetailsManager(testUser);
+ }
+
@Bean
public PasswordEncoder passwordEncoder() {
// set up the list of supported encoders and their prefixes
- String encodingId = "bcrypt";
+ PasswordEncoder defaultEncoder = new StandardPasswordEncoder();
Map encoders = new HashMap<>();
- encoders.put(encodingId, new BCryptPasswordEncoder());
+ encoders.put("bcrypt", new BCryptPasswordEncoder());
encoders.put("scrypt", new SCryptPasswordEncoder());
- encoders.put("SHA-256", new MessageDigestPasswordEncoder("SHA-256"));
+ encoders.put("noop", NoOpPasswordEncoder.getInstance());
- DelegatingPasswordEncoder delegatingPasswordEncoder = new DelegatingPasswordEncoder(encodingId, encoders);
- delegatingPasswordEncoder.setDefaultPasswordEncoderForMatches(encoders.get(encodingId));
+ DelegatingPasswordEncoder passwordEncoder = new DelegatingPasswordEncoder("bcrypt", encoders);
+ passwordEncoder.setDefaultPasswordEncoderForMatches(defaultEncoder);
- return delegatingPasswordEncoder;
+ return passwordEncoder;
}
}