spring security
-
LogoutFilter 란? LogoutFilter는 Spring Security 에서 로그아웃에 대한 처리를 담당하는 필터로 사용자가 특정 로그아웃 URL로 로그아웃을 요청 했을 경우에만 적용되는 필터이다. LogoutFilter는 세션 무효화, 인증토큰 삭제 등 Security Context에서 해당 인증 객체를 삭제한다. 아래는 LogoutFilter 클래스와 doFilter 메서드이다. requiresLogout() 메서드를 통해 요청된 URL이 로그아웃 URL인지 확인한다. 아래는 requiresLogout 메서드이다. RequestMatcher 의 matches 를 통해 URL 정보를 확인하고 맞으면 true 를 리턴한다. 로그아웃 URL 이 맞을 경우SecurityContextHolder 에..
[Spring Security] LogoutFilterLogoutFilter 란? LogoutFilter는 Spring Security 에서 로그아웃에 대한 처리를 담당하는 필터로 사용자가 특정 로그아웃 URL로 로그아웃을 요청 했을 경우에만 적용되는 필터이다. LogoutFilter는 세션 무효화, 인증토큰 삭제 등 Security Context에서 해당 인증 객체를 삭제한다. 아래는 LogoutFilter 클래스와 doFilter 메서드이다. requiresLogout() 메서드를 통해 요청된 URL이 로그아웃 URL인지 확인한다. 아래는 requiresLogout 메서드이다. RequestMatcher 의 matches 를 통해 URL 정보를 확인하고 맞으면 true 를 리턴한다. 로그아웃 URL 이 맞을 경우SecurityContextHolder 에..
2023.02.17 -
Spring Security를 사용하여 커스텀 필터를 생성하지 않고 로그인 인증을 진행할때 AbstractAuthenticationProcessingFilter 를 상속받은 UsernamePasswordAuthenticationFilter 에 의해 진행된다.본인은 AbstractAuthenticationProcessingFilter 를 직접 상속받아 커스텀 필터를 만들었다. 특정 계정이 로그인 되어 있는 상황에서 다른 브라우저에서 로그인을 진행하면 최대 세션 개수에 의해 로그아웃이 진행되었어야 했다. 설정은 아래와 같다.maximumSession(1) 설정에 의해 최대 세션 개수는 1개이고 maxSessionsPreventsLogin(false) 로이전 사용자 만료 설정으로 설정했다.이전 사용자 만료 설..
Spring Security ConcurrentSessionControlAuthenticationStrategy 설정(동시세션제어 설정)Spring Security를 사용하여 커스텀 필터를 생성하지 않고 로그인 인증을 진행할때 AbstractAuthenticationProcessingFilter 를 상속받은 UsernamePasswordAuthenticationFilter 에 의해 진행된다.본인은 AbstractAuthenticationProcessingFilter 를 직접 상속받아 커스텀 필터를 만들었다. 특정 계정이 로그인 되어 있는 상황에서 다른 브라우저에서 로그인을 진행하면 최대 세션 개수에 의해 로그아웃이 진행되었어야 했다. 설정은 아래와 같다.maximumSession(1) 설정에 의해 최대 세션 개수는 1개이고 maxSessionsPreventsLogin(false) 로이전 사용자 만료 설정으로 설정했다.이전 사용자 만료 설..
2022.12.27 -
Spring Security 에서 세션 제어를 위해 인증 api를 추가해줘야 한다. 아래와 같이 HttpSecurity 의 .sessionManagement() 를 사용해 세션 관리 기능이 동작한다. @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .anyRequest() .authenticated() .and() .formLogin() .and() .sessionManagement() .maximu..
Spring Security 정리하기 (#3 세션 제어)Spring Security 에서 세션 제어를 위해 인증 api를 추가해줘야 한다. 아래와 같이 HttpSecurity 의 .sessionManagement() 를 사용해 세션 관리 기능이 동작한다. @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .anyRequest() .authenticated() .and() .formLogin() .and() .sessionManagement() .maximu..
2022.12.23 -
Spring Security 에서 인증이 되지 않은 사용자는 다른 페이지로 이동을 시도할 경우 로그인 페이지로 리다이렉트 됩니다. 사용자가 로그인 정보를 입력하고 로그인을 시도한다. 인증이 될 경우 Authentication 이라는 인증 토큰을 생성하고 해당 토큰을 Security Context 및 세션에 저장한다. 사용자가 요청을 하게 되면 Spring Security 는 세션에 저장된 인증토큰을 확인하여 인증된 사용자라고 판단하여 요청에 대한 응답을 하게 된다. @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure..
Spring Security 정리하기 (#2 Form Login 구현)Spring Security 에서 인증이 되지 않은 사용자는 다른 페이지로 이동을 시도할 경우 로그인 페이지로 리다이렉트 됩니다. 사용자가 로그인 정보를 입력하고 로그인을 시도한다. 인증이 될 경우 Authentication 이라는 인증 토큰을 생성하고 해당 토큰을 Security Context 및 세션에 저장한다. 사용자가 요청을 하게 되면 Spring Security 는 세션에 저장된 인증토큰을 확인하여 인증된 사용자라고 판단하여 요청에 대한 응답을 하게 된다. @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure..
2022.12.21 -
아래 내용은 인프런 정수원님의 강의를 듣고 정리하는겸 적은 글입니다. https://www.inflearn.com/course/%EC%BD%94%EC%96%B4-%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0 스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security - 인프런 | 강의 초급에서 중.고급에 이르기까지 스프링 시큐리티의 기본 개념부터 API 사용법과 내부 아키텍처를 학습하게 되고 이를 바탕으로 실전 프로젝트를 완성해 나감으로써 스프링 시큐리티의 인증과 www.inflearn.com Spring Boot 에서 Spring Security 를 사용하기 위해 아래와 같이 pom.xml에 의존성을 추가..
Spring Security 정리하기 (#1 사용자 정의 보안 기능 구현)아래 내용은 인프런 정수원님의 강의를 듣고 정리하는겸 적은 글입니다. https://www.inflearn.com/course/%EC%BD%94%EC%96%B4-%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0 스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security - 인프런 | 강의 초급에서 중.고급에 이르기까지 스프링 시큐리티의 기본 개념부터 API 사용법과 내부 아키텍처를 학습하게 되고 이를 바탕으로 실전 프로젝트를 완성해 나감으로써 스프링 시큐리티의 인증과 www.inflearn.com Spring Boot 에서 Spring Security 를 사용하기 위해 아래와 같이 pom.xml에 의존성을 추가..
2022.12.21 -
Spring Security 에서 로그아웃을 하기 위해선 2가지 방법이 있다. 다른방법이 있을지 모르겠지만 본인이 사용했던 방법은 2가지다. .logoutUrl("URL") 과 .logoutRequestMatcher() 방법이다. 처음 설정할땐 .logoutUrl 을 사용했었으나 csrf() 설정 여부에 따라 GET 방식, POST 방식 요청이 달라져 logoutRequestMatcher() 로 설정했다. 기본적으로 logoutUrl 은 "/logout" 으로 설정되어 있다. 아무 설정도 안했을 땐 /logout 으로 요청 시 로그아웃이 된다. 여기서 달라지는건 CSRF 활성화 여부이다. 아래는 Spring Security 의 logoutUrl 메서드이다. 먼저 주석내용을 구글번역기에 돌려보면 아래와 같..
[Spring Security] logout 설정 2가지Spring Security 에서 로그아웃을 하기 위해선 2가지 방법이 있다. 다른방법이 있을지 모르겠지만 본인이 사용했던 방법은 2가지다. .logoutUrl("URL") 과 .logoutRequestMatcher() 방법이다. 처음 설정할땐 .logoutUrl 을 사용했었으나 csrf() 설정 여부에 따라 GET 방식, POST 방식 요청이 달라져 logoutRequestMatcher() 로 설정했다. 기본적으로 logoutUrl 은 "/logout" 으로 설정되어 있다. 아무 설정도 안했을 땐 /logout 으로 요청 시 로그아웃이 된다. 여기서 달라지는건 CSRF 활성화 여부이다. 아래는 Spring Security 의 logoutUrl 메서드이다. 먼저 주석내용을 구글번역기에 돌려보면 아래와 같..
2022.11.29