본문 바로가기

spring security

(14)
요청 캐시 RequestCache / SavedRequest 정수원님의 **스프링 시큐리티 완전 정복** 강의 내용 기록입니다 !!    RequestCache인증 절차 문제로 로그인 페이지로 리다이렉트된 후, 이전에 했던 요청 정보를 담고 있는 'SavedRequest' 객체를 쿠키 혹은 세션에 저장하고 필요시 다시 가져와 실행하는 캐시 메커니즘RequestCache는 인터페이스, 이를 구현한 객체는 HttpSessionRequestCache SavedRequestSavedRequest는 로그인과 같은 인증 절차 후 사용자를 인증 이전의 원래 페이지로 안내함이전 요청과 관련된 여러 정보를 저장SavedRequest는 인터페이스, 이를 구현한 객체는 DefaultSavedRequestredirectUrl : 이전 요청 url  흐름도 client↓  Get  /u..
로그 아웃 - logout() 정수원님의 **스프링 시큐리티 완전 정복** 강의 내용 기록입니다 !!    로그아웃스프링 시큐리티는 기본적으로 DefaultLogoutPageGeneratingFilter를 통해 로그아웃 페이지를 제공하며 "GET  /logout" URL로 접근이 가능함 → 로그아웃 버튼 클릭을 통해 "POST  /logout"로그아웃 실행은 기본적으로 "POST  /logout"으로만 가능CSRF 기능을 비활성화 or RequestMatcher를 사용 ≫ GET, PUT, DELETE 모두 가능로그아웃 필터를 거치지 않고 스프링 MVC에서 커스텀하게 구현할 수 있음로그인 페이지가 커스텀하게 생성될 경우 로그아웃 기능도 커스텀하게 구현해야 함 logout() APIlogoutUrl : 로그아웃이 발생하는 URL 지정기..
익명 인증 사용자 - anonymous() 정수원님의 **스프링 시큐리티 완전 정복** 강의 내용 기록입니다 !!    익명 사용자스프링 시큐리티에서 "익명으로 인증된" 사용자는 "인증되지 않은" 사용자와 동일액세스 제어 속성을 더 편리하게 구성하기 위해 인증되지 않은 사용자도 하나의 객체로 만듦인증되지 않은 사용자도 하나의 Authentication 객체가 되어 SecurityContextHolder는 항상 Authentication 객체를 포함하고 null을 포함하지 않는다 !인증 사용자와 익명 인증 사용자를 구분하여 어떤 기능을 수행하고자 할 때 유용익명 인증 사용자의 권한을 별도로 운용할 수 있음 ≫ 인증된 사용자가 접근할 수 없도록 구성이 가능함인증 사용자) Authentication을 SecurityContext에 저장 → Securi..
기억하기 인증 필터 - RememberMeAuthenticationFilter 정수원님의 **스프링 시큐리티 완전 정복** 강의 내용 기록입니다 !!    RememberMeAuthenticationFilterSecurityContextHolder에 Authentication이 포함되지 않은 경우 실행되는 필터포함되어 있다면 인증된 상태이므로 인증 처리 필요가 없음세션이 만료되었거나 애플리케이션 종료로 인해 인증 상태가 소멸된 경우 → 토큰 기반 인증을 사용해 유효성을 검사하고 토큰이 검증되면 자동 로그인 처리를 수행토큰을 생성하고 쿠키에 담아 보내는 역할이 아님 ! → 이건 폼인증 필터에서 RememberMeServices를 통해 처리인증 상태가 소멸된 경우 재인증 진행하여 자동로그인을 처리하는 역할 흐름도 client↓  Get  /user↓RememberMeAuthentica..
기억하기 인증 - rememberMe() 정수원님의 **스프링 시큐리티 완전 정복** 강의 내용 기록입니다 !!    RememberMe 인증사용자가 웹 사이트나 애플리케이션에 로그인할 때 자동으로 인증 정보를 기억하는 기능UsernamePasswordAuthenticationFilter와 함께 사용됨폼인증 / httpBasic 인증 등 인증 방식의 인터페이스에 포함됨 → 인증 과정 내부에서 호출됨!인증 성공 시 RememberMeServices.loginSuccess() ≫ RememberMe 토큰을 생성하고 쿠키로 전달인증 실패 시 RememberMeServices.loginFail() ≫ 쿠키를 지움 (보안을 위해 기존 저장되어 있던 쿠키도 삭제)LogoutFilter와 연계하여 로그아웃 시 쿠키를 지움 토큰 생성기본적으로 암호화된 토큰으..
기본 인증 필터 - BasicAuthenticationFilter 정수원님의 **스프링 시큐리티 완전 정복** 강의 내용 기록입니다 !!    BasicAuthenticationFilter기본 인증 서비스 제공BasicAuthenticationConverter를 사용하여 요청 헤더에 기술된 인증 정보의 유효성을 체크하고 Base64 인코딩된 username과 password를 추출유효성 체크 : 요청 헤더에 Authentication: Basic [인코딩값] 이 있는지 확인유효성 검사 성공시 인코딩값을 통해 username, password 추출하여 UsernamePasswordAuthenticationToken에 저장기본인증의 경우 일반적으로 세션을 사용하지 않음세션을 사용하는 경우 : 인증 과정에서 세션에 인증정보 저장, 매 요청마다 인증 과정을 거치지 않음세션을 ..
기본 인증 - httpBasic() 정수원님의 **스프링 시큐리티 완전 정복** 강의 내용 기록입니다 !!    HTTP Basic 인증HTTP는 엑세스 제어와 인증을 위한 프레임워크를 제공, 가장 일반적인 인증 방식은 "Basic" 인증 방식인증 프로토콜은 HTTP 인증 헤더에 기술되어 있음 Client↓    GET   /home인증되지 않은 상태)서버 → 클라이언트401 UnauthorizedWWW-Authenticate: Basic realm="localhost"서버는 클라이언트에게 인증 요구를 보냄401 Unauthorized 응답WWW-Authenticate 헤더 ≫ realm(보안영역)과 Basic 인증 방법 포함↓username, password 입력 후 다시 요청클라이언트 → 서버GET   /homeAuthorization..
폼 인증 필터 - UsernamePasswordAuthenticationFilter 정수원님의 **스프링 시큐리티 완전 정복** 강의 내용 기록입니다 !!    AbstractAuthenticationProcessingFilter스프링 시큐리티는 AbstractAuthenticationProcessingFilter 클래스를 사용자의 자격 증명을 인증하는 기본 필터로 사용보통 AbstractAuthenticationProcessingFilte 를 상속받은 클래스로 사용 UsernamePasswordAuthenticationFilter 클래스 또는 직접 정의 클래스UsernamePasswordAuthenticationFilter 클래스는 HttpServletRequest에서 제출된 사용자 이름과 비밀번호로부터 인증을 수행인증 프로세스가 초기화 될 때 로그인 페이지와 로그아웃 페이지 생성을 ..