인가 API - 권한 설정 선언적 방식 URL http.antMatchers("/users/**")/hasRole("USER") Method @PreAuthorize("hasRole("USER")") public void user() {System.out.println("user")} 동적 방식 - DB 연동 프로그래밍 URL Method 선언적 방식 - URL url 자체를 선언하여 접근 권한을 조정하는 방식 설정 시 구체적인 경로가 먼저오고 그것 보다 큰범위의 경로가 뒤에 오도록 하여야 한다. 각 메소드에 대한 내용은 아래 같다. .authorizeRequests() : 모든 경로에 보 요청되는 메소드를 선언 .antMatchers("/","/users","user/login/**", "/login*..
SessionManagementFilter 세션에 관리작업에 관련된 업무를 수행하는 Filter 세션 관리 인증 시 사용자의 세션정보를 등록, 조회, 삭제 등의 세션 이력을 관리 동시적 세션 제어 동일 계정으로 접속이 허용되는 최대 세션수를 제한 세션 고정 보호 일증 할 때마다 세션쿠키를 새로 발급하여 공격자의 쿠키 조작을 방지 세션 생성 정책 Always, If_Require, Never, Stateless 동시 세션 제어 동시 세션 제어 현재 동일한 계정으로 인증 받을 때 생성되는 허용된 세션의 갯수가 초과가 되었을 때, 지속적으로 세션을 유지하는 제어 방법 세션을 제한 하는 방법으로는 총 두가지가 존재함 jamesblog95.tistory.com ConcurrentSessionFilter 매 요청 ..
동시 세션 제어 현재 동일한 계정으로 인증 받을 때 생성되는 허용된 세션의 갯수가 초과가 되었을 때, 지속적으로 세션을 유지하는 제어 방법 세션을 제한 하는 방법으로는 총 두가지가 존재함. 새로운 사용자가 나타 날 경우, 이전 사용자 세션을 만료 시킴 이전 사용자 세션을 존재 할 경우, 현재 사용자 인증을 실패시킴.(로그인을 하지 못하게 함.) SecurityConfig .sessionManagement() : 세션 관리 메소드를 선언 .maximumSessions(1) : 중복 세션 최대 갯수를 설정 .maxSessionsPreventsLogin(true) : 기본값은 false이며 flase, true에 따라 세션제어 방법을 선택할 수 있음. false시 : 새로운 세션이 생기면 이전 세션은 만료시킴..
AnonymousAuthenticationFilter Authentication 객체가 없는 Client를 접근을 막는 것이 아니라 권한이 없는 상태로도 접근을 할 수 있게 하는 Filter 익명사용자 인증처리하는 Filter 익명사용자와 인증 사용자를 구분해서 처리하기 위한 용도로 사용 화면에서 인증 여부를 구현할 때 isAnonymous()와 isAuthenticated() 로 구분해서 사용 인증객체를 세션에 저장하지 않음. Client가 서버에 접근함. AnonymousAuthenticationFilter가 SecurityContext에 인증객체 이 있는지 없는지 확인함. 인증 객체가 있다면 chain.doFilter를 수행 인증객체가 없는 Client는 익명사용자용 AuthenticationTok..
Remember Me 인증 흔히 우리가 보고 있는 내 계정 기억하기 기능을 말함. 세션이 만료되고 웹 브라우저가 종료된 후에도 어플리케이션이 사용자를 기억하는 기능 Remember-Me 쿠키에 대한 Http 요청을 확인한 후 토큰 기반 인증을 사용해 유효성을 검사하고 토큰이 검증되면 사용자는 로그인이 된다. 사용자 라이프 사이클 인증성공(Remember-Me 쿠키 설정) 인증실패(쿠키가 존재하면 쿠키 무효화) 로그아웃(쿠키가 존재하면 쿠키 무효화) RememberMeAuthenticationFilter Authentication이 SecurityContext에 저장이 되어 있지 않다면 또는 Form 로그인으로 로그인시 RememberMe 체크박스에 클릭을 하여 접속하여 Client가 쿠키를 가지고 있다면..
Logout Flow Client가 POST 방식으로 /logout url로 접근함. Server가 세션을 무효화, 인증토근 삭제, 쿠키정보 삭제 Client 화면을 로그인 페이지로 이동. Logout Config Code .logout : 로그아웃 기능을 사용 .logoutUrl("/logout") : 로그아웃 진행을 하려면 해당 경로로 접근을 해야함. .logoutSuccessUrl("/login") : 로그 아웃이 완료되면 해당 경로로 이동함. .addLogoutHandler(new LogoutHandler() {} : 로그아웃시 session 삭제 작업을 수행하는 handler .logoutSuccessHandler(new LogoutSuccessHandler() {} : 로그아웃 완료시 원하는 ..