Files
0xb00b5-packmate/src/main/java/ru/serega6531/packmate/configuration/SecurityConfiguration.java
Sergey Shkurov 4e2473a3cc Update libraries
2023-04-27 22:35:02 +02:00

71 lines
2.5 KiB
Java

package ru.serega6531.packmate.configuration;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.EventListener;
import org.springframework.security.authentication.event.AuthenticationFailureBadCredentialsEvent;
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.core.userdetails.UserDetails;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
@EnableWebSecurity
@Slf4j
public class SecurityConfiguration {
@Value("${account-login}")
private String login;
@Value("${account-password}")
private String password;
@Bean
public InMemoryUserDetailsManager userDetailsService(PasswordEncoder passwordEncoder) {
UserDetails user = User.builder()
.username(login)
.password(passwordEncoder.encode(password))
.roles("USER")
.build();
return new InMemoryUserDetailsManager(user);
}
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
return http.csrf()
.disable()
.authorizeHttpRequests((auth) ->
auth.requestMatchers("/site.webmanifest")
.permitAll()
.anyRequest()
.authenticated()
)
.httpBasic()
.and()
.headers()
.frameOptions()
.sameOrigin()
.and()
.build();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@EventListener
public void authenticationFailed(AuthenticationFailureBadCredentialsEvent e) {
log.info("Login failed for user {}, password {}",
e.getAuthentication().getPrincipal(), e.getAuthentication().getCredentials());
}
}