2024/09/026 [Spring Security] 핸들러(예외) 처리 [400] AuthenticationFailureHandler (인증 실패 핸들러: 로그인 실패 핸드러) @Slf4j@RequiredArgsConstructorpublic class LoginFailHandler implements AuthenticationFailureHandler { private final ObjectMapper objectMapper; @Override public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException { lo.. 2024. 9. 2. [Spring Security] ROLE VS AUTHORITY 스프링 시큐리티에서 역할과 권한 두 개념은 유사하지만 서로 다른 목적과 용도로 사용된다. 역할 (Role)역할은 사용자가 수행할 수 있는 기능이나 책임을 그룹화하는 상위 개념 보통 여러 권한을 포함하는 큰 단위예) "ADMIN", "USER", "MANAGER" 권한 (Authority)특정 작업이나 자원에 대한 접근 권한을 정의하는 더 세분화된 개념, 권한은 구체적이며, 특정 작업이나 리소스에 대한 허가를 나타낸다. 예) "READ_PRIVILEGE", "WRITE_PRIVILEGE", "DELETE_PRIVILEGE" / 데이터 읽기 권한 스프링 시큐리티에서 역할과 권한 설정하기 UserPrincipal: UserDetailsService 반환 객체 (UserDetails 구현체) https:/.. 2024. 9. 2. [Spring Security] UserDetailsService 로그인 ~ 세션 생성 회원가입을 하고 유저의 정보를 DB에 저장하고 스프링 시큐리티를 통해 로그인을 했을 때어떤 방식으로 DB에서 유저 정보를 조회하고 활용할까? 1. 로그인 요청사용자가 로그인 폼에 사용자 이름과 암호를 입력하고 제출 2. UserDetailsService 호출SpringSecurity는 UserDetailsService의 loadUserByUsername 메서드를 호출하여 사용자 이름을 기반으로 사용자의 UserDetails 객체를 조회한다. public interface UserDetailsService { UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;}@Beanpublic User.. 2024. 9. 2. [Spring Security] Remember Me 설정 코드 @Beanpublic SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception{ return http .authorizeHttpRequests( authorize -> authorize .requestMatchers("/auth/login").permitAll() .anyRequest().authenticated()) .csrf(AbstractHttpConfigurer::disable) .formLogin(login -> login .. 2024. 9. 2. [Spring Security] Spring Session JDBC Spring Session JDBC란?Spring Session JDBC는 Spring 애플리케이션에서 세션 관리를 데이터베이스를 이용해 수행할 수 있도록 지원하는 라이브러리이다. 기본적으로 HTTP 세션은 서버의 메모리에 저장되지만, Spring Session JDBC를 사용하면 세션을 데이터베이스에 저장하여 여러 가지 이점을 얻을 수 있다. Spring Session JDBC 의존성 추가 // 스프링 Session JDBCimplementation 'org.springframework.session:spring-session-jdbc' Spring Session 동작 확인 현재 나는 application.yaml 설정 파일에 h2 데이터베이스 관련 설정을 해두었다. 이렇게 세션 관련 테이블이 자동.. 2024. 9. 2. [Spring Security] 시큐리티 폼 로그인 커스텀 설정 PasswordEncorder@Beanpublic PasswordEncoder passwordEncoder(){ return new BCryptPasswordEncoder();} 비밀번호 암호화에 사용할 PasswordEncorder 빈 정의 PasswordEncorder 인터페이스는 14개의 구현체를 제공한다. BCryptPasswordEncorder는 BCrypt 알고리즘을 사용한다. 예전에 스프링 시큐리티 비밀번호 암호화 모듈인 Crypto와 그중에서 ScyptEncorder를 정리했는데 참고하면 좋다. https://20240228.tistory.com/160 비밀번호 암호화 적용하기(Spring Security Crypto)https://20240228.tistory.com/153 비밀번호.. 2024. 9. 2. 이전 1 다음