인프런 스프링 시큐리티 카테고리 없음 2022. 12. 30. [스프링 시큐리티] 기본 API & Filter 이해(7) 동시 세션 제어 동일한 계정으로 인증을 받을 때 생성되는 세션의 허용 개수가 초과되었을 경우에 어떻게 세션을 초과하지 않고 계속 유지할 수 있을 지에 대한 제어이다. 스프링 시큐리티에서는 2가지 정책을 제공한다. 가정 : 최대 세션 허용 개수(1개)를 초과했다. 이전 사용자의 세션을 만료 시킨다. 사용자 1이 로그인하면 사용자 1의 세션이 서버에 생성된다. 사용자 2가 로그인하면 사용자 2의 세션이 서버에 생성된다. 그럼 서버에는 동일한 계정으로 2개의 세션이 생성된다. → 최대 세션 허용 개수(1개)를 초과했다. 전략에 따르면, 사용자 2가 로그인하여 세션이 생성이 되면 이전 사용자의 세션을 만료시킨다. 사용자 1이 다른 자원에 접근하려고 하면 세션이 만료되었기 때문에 사용자 1의 세션을 실제로 만료시켜 최대 세션 개.. 카테고리 없음 2022. 12. 30. [스프링 시큐리티] 기본 API & Filter 이해(5) Remember Me 인증 Remember me 옵션을 활성화하면 스프링 시큐리티가 다음 기능을 제공한다. 세션이 만료되고 웹 브라우저가 종료된 후에도 어플리케이션이 사용자를 기억하는 기능이다. JSESSIONID 쿠키가 없더라도 리멤버미 쿠키가 있다면 인증된 상태로 처리된다. 리멤버 미 쿠키에 대한 http 요청을 확인한 후 토큰 기반 인증을 사용해 유효성을 검사하고 토큰이 검증되면 사용자는 로그인 된다. 사용자 라이프 사이클 인증 성공하면, 해당 사용자에게 리멤버미 쿠키가 발급된다. 인증 실패하면, 리멤버미 쿠키가 존재한다면 쿠키를 무효화한다. 로그아웃할 때도, 리멤버미 쿠키가 존재한다면 쿠키를 무효화한다. http.rememberMe() .rememberMeParameter("remember") // 기본 파라미터 명 rem.. 카테고리 없음 2022. 12. 30. [스프링 시큐리티] 기본 API & Filter 이해(4) LogoutFilter 로그아웃 요청을 보냄 Spring Security 가 다음 작업을 진행한다. 세션을 무효화 인증 토큰을 삭제 - SecurityContext 쿠키 정보 삭제 로그인 페이지로 리다이렉트 처리 http.logout() // 로그아웃 기능이 작동 .logoutUrl("/logout") // UI .logoutSuccessUrl("/login") // 로그아웃 성공 후 이동 페이지 .deleteCookies("JSESSIONID", "remember-me") // 로그아웃 후 삭제할 쿠키 설정 // 로그아웃이 수행될 때, 세션 무효화/인증 토큰 삭제 등을 기본적으로 제공하지만 사용자 정의로 작업할 내용이 있을 경우 설정 .addLogoutHandler(new LogoutHandler() { @Override p.. 카테고리 없음 2022. 12. 30. [스프링 시큐리티] 기본 API & Filter 이해(2) 폼 인증방식 🌿 폼 인증 방식 프로세스 서버 자원은 인증된 사용자만 사용할 수 있기 때문에 인증이 안되면 로그인 페이지로 리다이렉트 된다. username&password 를 입력하여 다시 인증을 시도한다. Spring Security 가 세션 ID 를 생성하고 이 세션에 인증 결과, 내용을 담은 토큰을 생성, 저장한다. Authentication 객체에 저장한다. 인증을 받은 이후 다시 서버 자원에 접근을 시도하면 Spring Security 가 현재 사용자가 가진 세션으로 부터 인증 토큰의 존재 여부를 판단한다. 사용자는 해당 세션으로 계속 자원에 접근하게 된다. 폼 로그인 인증 API http.formLogin() .loginPage("/lgoinPage") // 사용자 정의 로그인 페이지 .defaultSuc.. 이전 1 다음