One Time Token with default configuration
Here is the example of the one time token with default configuration in spring boot.
Steps
Security Configuration
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.http.HttpMethod;
import org.springframework.security.config.Customizer;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
@EnableWebSecurity
public class SecurityConfig {
// to encode/ decode password with Bycrypt
@Bean
public BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public SecurityFilterChain configure(HttpSecurity security) throws Exception {
return security.authorizeHttpRequests(request ->
request
.requestMatchers("/public").permitAll()
.requestMatchers(HttpMethod.GET, "/ott/sent").permitAll()
.anyRequest().authenticated()
)
.formLogin(Customizer.withDefaults())
.oneTimeTokenLogin(Customizer.withDefaults()) // with default setup
.build();
}
// in memory user details service
@Bean
public InMemoryUserDetailsManager userDetailsManager() {
var user = User.withUsername("srv").password(this.passwordEncoder().encode("12345")).build();
return new InMemoryUserDetailsManager(user);
}
}One time token success handler
/ott/sent handler and page
pom.xml
application.properties
Last updated