본문 바로가기

Spring Security

(7)
Spring Security - RememberMeAuthenticationFilter 란 - RememberMeAuthenticationFilter 란 - 스프링 시큐리티에서는 RememberMe라는 기능을 지원해준다. 이 RememberMe라는 기능은 세션이 만료된 뒤에도 서버에서 클라이언트의 인증 값을 기억하고 있어 주는 기능이다. 보통 cookie에 Remember Me 기능을 해줄 수 있는 특정한 쿠키 키-값을 세팅해서 구현을 한다. 이 복잡한 과정을 시큐리티에서는 간단한 설정으로 제공을 해주며 해당 기능을 사용하기 위해서는 해당 기능을 아래와 같은 형태로 활성화시켜야 한다. @Override protected void configure(HttpSecurity http) throws Exception { http.formLogin(); http.rememberMe(); } 위와 같이 ..
Spring Security - LogoutFilter 란 - LogoutFilter 란- LogoutFilter란 로그아웃에 대한 처리를 담당하는 필터로 사용자가 로그아웃 요청을 했을 경우에만 적용되는 필터이다. LogoutFilter는 세션 무효화, 인증 토큰 삭제, SecurityContext에서 해당 토큰 삭제, 쿠키 삭제 및 로그인 페이지로 리다이렉트를 시켜주는 기능이 있다. LogoutFilter의 필터 기능이 구현된 코드를 보면 아래와 같다. private void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { if (this.requiresLogout(request, res..
Spring Security - UsernamePasswordAuthenticationFilter 란 - UsernamePasswordAuthenticationFilter 란- UsernamePasswordAuthenticationFilter란 Form based Authentication 방식으로 인증을 진행할 때 아이디, 패스워드 데이터를 파싱하여 인증 요청을 위임하는 필터이다. 쉽게 설명하자면 유저가 로그인 창에서 Login을 시도할 때 보내지는 요청에서 아이디(username)와 패스워드(password) 데이터를 가져온 후 인증을 위한 토큰을 생성 후 인증을 다른 쪽에 위임하는 역할을 하는 필터이다. Spring Boot 기반의 HttpSecurity를 설정하는 코드에서 http.formLogin(); 을 사용하면 시큐리티에서는 기본적으로 UsernamePasswordAuthenticationF..
Spring Security UserDetails, UserDetailsService 란? - 삽질중인 개발자 Spring Security - UserDetails , UserDetailsService UserDetails 란? Spring Security에서 사용자의 정보를 담는 인터페이스이다. Spring Security에서 사용자의 정보를 불러오기 위해서 구현해야 하는 인터페이스로 기본 오버라이드 메서드들은 아래와 같다. 메소드 리턴 타입 설명 기본값 getAuthorities() Collection
spring security DB를 이용한 로그인 구현 3 ( 로그아웃 하기 ) - 삽질중인 개발자 - logout - 이 포스팅에서는 로그아웃을 구현한다. 1. 로그아웃 버튼 만들기 스프링 시큐리티의 기본 로그아웃 url은 POST 메소드의 /logout 이다. LOGOUT 2. SecurityConfig.java (이전 포스팅 6번) 에 아래의 코드 추가 @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/member/**").hasAnyAuthority("MEMBER") .and() .formLogin()//로그인 폼 사용 .loginPage("/login")//커스텀 로그인 페이지 .successHandler(customAuthentication..
스프링 시큐리티 DB를 이용한 로그인 구현 2 ( ajax 로그인 ) - 삽질중인 개발자 - spring security ajax login - 이 포스팅에서는 jQuery Ajax를 이용한 커스텀 로그인 페이지 구현을 할 것이다. 스프링 시큐리티에 기본 로그인 페이지는 로그인 실패시 페이지를 새로고침하고 쿼리스트링(localhost:8090/login?error)을 주는 방식으로 구현이 되어 있는데 이 방식으로 구현을 하면 페이지를 새로 띄워야 할 뿐만 아니라 입력했던 정보에 대해서 전부 사라지게 된다. 위에나오는 불편함을 해소하기 위해 요즘 나오는 대부분의 사이트를 로그인시 ajax를 이용해서 login을 한다. 1. LoginController.java 생성 스프링 시큐리티의 기본 로그인 url은 /login 이다. 이걸 커스텀하기위해 /login 을 재정의한다. 아래의 코드에서는 로그..
스프링 시큐리티 DB를 이용한 로그인 구현 1 ( 회원 설정 및 일반 로그인 ) - 삽질중인 개발자 - spring security 로그인 (mariaDB) - 스프링 시큐리티 스프링 기반의 보안 관련 프레임워크이다. 스프링 시큐리티를 사용하면 보안에 관련된 옵션을 자동적으로 구현해주기에 우리가 어느정도 신경을 안써도 된다. 개발 환경 - spring boot 2.2.5.RELEASE - jpa ( 이거 무조건 배우자 ) - mariaDB ( JPA 사용하면 oracle , h2 기타 등등 모든 DB 가능 ) - jsp jpa를 사용해서 DB를 다룰건데 jpa가 아닌 mybatis를 이용해서 구현할때 중간중간에 어떤 코드가 들어가야 하는지 써놨다. 이 포스팅에서는 우선 로그인을 시켜볼 것이다. 하기전에 application.properties 에 가서 미리 설정하자. ( 한글로 써둔 부분은 알아서 채우..