본문 바로가기

SPRING

[스프링 시큐리티 완전 정복| 실전 프로젝트 | 회원 인증 시스템]RestAuthenticationSuccess(Failure)Handler RestAuthenticationSuccessHandler  RestAuthenticationSuccessHandler는 Spring Security에서 인증 성공 후 처리를 담당하는 인증 성공 핸들러다. 주로 REST API에서 인증이 성공한 후에 추가적인 응답을 처리하거나, 커스텀 로직을 적용할 수 있도록 구현된다. REST API 환경에서는 페이지 리다이렉션 대신 JSON 응답을 반환하는 것이 일반적이므로, 이를 적절하게 처리하는 역할을 한다.1. AuthenticationSuccessHandler란?AuthenticationSuccessHandler는 사용자가 인증에 성공했을 때 호출되는 인터페이스로, 인증 성공 후의 동작을 정의한다.주로 페이지 기반 웹 애플리케이션에서는 인증 성공 시 사용자를 .. 더보기
[스프링 시큐리티 완전 정복| 실전 프로젝트 | 회원 인증 시스템] RestAuthenticationProvider 문제 상황  RestAuthenticationProvider는 Spring Security에서 인증(Authentication)을 처리하는 컴포넌트 중 하나로, REST API 환경에 적합하게 설계된 AuthenticationProvider의 구현체다. 이 클래스는 클라이언트로부터 받은 인증 정보를 검증하고, 성공적으로 인증이 완료되면 인증된 사용자 정보를 반환한다. 주로 사용자 이름과 비밀번호를 통해 인증을 처리하거나, 토큰 기반 인증을 처리할 수 있도록 확장할 수 있다.    RestAuthenticationProvider  1. AuthenticationProvider의 역할AuthenticationProvider는 Spring Security에서 사용자 인증을 처리하는 핵심 인터페이스다. auth.. 더보기
[스프링 시큐리티 완전 정복| 실전 프로젝트 | 회원 인증 시스템] RestAuthenticationFilter 문제 상황  RestAuthenticationFilter는 REST API 기반 인증을 처리하기 위한 커스텀 필터로, RESTful 방식에서 세션 기반 인증과 달리, 주로 토큰 기반 인증이나 비동기 요청을 처리하는 데 사용된다. Spring Security에서 제공하는 기본적인 UsernamePasswordAuthenticationFilter와 유사하지만, REST API에 맞게 커스터마이징 되어 동작하는 것이 핵심이다.    RestAuthenticationFilter  1. Form 기반 인증과 차이점기본적으로 Spring Security는 UsernamePasswordAuthenticationFilter를 사용하여 username과 password로 로그인 폼에서 입력한 데이터를 인증한다. 이 과정.. 더보기
[스프링 시큐리티 완전 정복| 실전 프로젝트 | 회원 인증 시스템] Rest 인증 보안 및 화면 구성 문제 상황 Spring Security에서 REST API와 비동기 인증은 주로 JWT(JSON Web Token) 같은 토큰 기반 인증을 사용하여 세션을 유지하지 않는 방식으로 동작한다. 비동기 인증은 웹 페이지의 리프레시 없이 데이터를 송수신할 수 있는 환경, 즉 주로 AJAX 호출이나 REST API 호출에서 자주 사용된다.     Rest 인증 보안 세션 기반 인증에서 비동기 방식세션 기반 인증에서 비동기 방식으로 동작하는 인증은 주로 세션 쿠키를 통해 이루어진다. 웹 애플리케이션에서 로그인 후 서버가 클라이언트에게 세션 ID를 포함한 쿠키를 전달하고, 클라이언트는 이후 비동기 요청에서 이 쿠키를 계속해서 포함시켜 서버에 인증을 요청한다. 1. 세션 기반 인증 흐름로그인 요청: 클라이언트는 로그인.. 더보기
[스프링 시큐리티 완전 정복| 실전 프로젝트 | 회원 인증 시스템] AuthenticationSuccess(Failure)Handler, AccessDeniedHandler AuthenticationSuccessHandler  AuthenticationSuccessHandler는 Spring Security에서 인증(로그인)이 성공했을 때 호출되는 인터페이스다. 이 인터페이스는 인증이 성공한 후에 어떤 작업을 수행할지 정의하는 데 사용된다. 일반적으로 사용자에게 적절한 응답을 보내거나 특정 페이지로 리다이렉트하는 등의 작업을 처리할 수 있다.주요 역할로그인 성공 후 동작 정의: 사용자가 성공적으로 인증되면, AuthenticationSuccessHandler가 호출되어 추가 작업을 수행할 수 있다. 예를 들어, 특정 페이지로 리다이렉트하거나, 사용자 정보를 로깅하거나, 세션에 값을 저장하는 등의 작업을 할 수 있다.세션 관리: 로그인 성공 시 세션 정보를 초기화하거나 추가적.. 더보기
[스프링 시큐리티 완전 정복| 실전 프로젝트 | 회원 인증 시스템] 인증상세 WebAuthenticationDetails  WebAuthenticationDetails는 사용자가 제출한 인증 요청과 관련된 추가적인 세부 정보를 담고 있는 클래스다. 기본적으로 이 클래스는 HTTP 요청과 관련된 데이터를 캡처하고, 이를 인증 정보에 추가하는 역할을 한다.대표적으로 캡처되는 정보는 아래와 같다:Remote Address (원격 주소): 사용자의 IP 주소.Session ID (세션 ID): 사용자가 현재 로그인한 세션의 ID.이 클래스는 보안 정책에 따라 추가적인 인증 검증에 사용될 수 있다. 예를 들어, 특정 IP 주소에서의 로그인 시도를 차단하거나, 특정 세션 상태에 따라 인증 절차를 추가할 수 있다.    AuthenticationDetailsSource  Authenticat.. 더보기
[스프링 시큐리티 완전 정복| 실전 프로젝트 | 회원 인증 시스템] 커스텀 UserDetailService, AuthenticationProvider 구현하기 UserDetailsService  사용자 인증을 처리하는 핵심 인터페이스 중 하나로, 사용자의 정보를 불러와 인증을 위한 로직을 처리하는 역할을 한다. 주로 사용자 데이터를 데이터베이스에서 조회하고, 인증 객체로 반환하는 데 사용된다.UserDetailsService의 주요 기능:사용자 조회: UserDetailsService는 사용자의 이름(주로 사용자 ID, username)을 입력받아 해당 사용자의 세부 정보를 불러오는 책임을 가진다.인증 처리: 불러온 사용자 정보는 Spring Security에 의해 인증 절차에 사용된다.UserDetails 반환: 사용자의 세부 정보는 UserDetails라는 인터페이스로 반환된다. 이 객체는 인증에 필요한 정보를 담고 있다(사용자 이름, 비밀번호, 권한 등).. 더보기
[스프링 시큐리티 완전 정복| 실전 프로젝트 | 회원 인증 시스템] 로그인, 회원가입 문제 상황   비밀 번호를 복호화 할 수 없게 하여 안전하게 보호하고 저장된 암호화 비교할 수 있다.  요구 사항  PasswordEncoder를 이해하고 비밀번호를 BCrypt 방식으로 생성하여 저장한다. 필요 개념  PasswordEncoderPasswordEncoder는 Spring Security에서 제공하는 인터페이스로, 비밀번호를 안전하게 암호화하고 인증 시 비밀번호를 검증하는 역할을 한다. 비밀번호를 암호화하는 이유는 보안을 강화하기 위함이며, 특히 데이터베이스에 저장될 때 평문으로 저장하지 않고, 암호화된 형태로 저장하여 해킹 등의 보안 사고 발생 시에도 안전하게 비밀번호가 보호될 수 있도록 한다.비밀번호 암호화 (Encoding):encode(CharSequence rawPassword).. 더보기