이 글은 인프런 정수원님의 강의를 듣고 복습하며 작성한 글입니다. 익명 사용자 필터(AnonymousAuthFilter) 익명 사용자 필터는 인증받지 않은 사용자를 위해 제공되는 필터다. 예를 들어 인증을 받지 않는 사용자가 있다고 가정해보자. 그러면 이 사람은 인증 객체를 가지고 있지 않기 때문에 인증 객체가 있냐고 물어보면 항상 Null이라는 값을 보여줄 것이다. 그런데 이렇게 될 경우 Null Pointer Exception이 발생할 수 있다. 따라서 스프링 시큐리티는 인증되지 않은 사용자에게도 익명 인증 객체를 전달하면서 "인증 객체로 증명한다"라는 방식을 유지하려고 한다. 사실, 익명 인증객체라고 해서 뭔가 기능이 추가되지는 않는다. 익명 인증 객체는 어디에도 갈 수 없는 통행증을 얻은 것이나 ..
이 게시글은 인프런 정수원님의 강의를 복습하며 작성한 글입니다. Remember Me 기능 로그인을 한 사용자가 있더라도 세션이 만료되면 다시 한번 로그인을 해야한다. 그리고 혹시, 오늘 저녁에 자고 일어나서 다음 날 접속했을 때, 바로 접속하면 베스트가 아닐까? 이런 기능을 구현해주는 것을 Remember Me라고 한다. Remember me 기능이 활성화 되면, Remember me 쿠키를 내려준다. 사용자가 요청할 때, Remember me 쿠키를 서버에게 전달해주면 다시 한번 로그인을 하지 않더라도 자동으로 로그인을 할 수가 있게 된다. 왜냐하면 Remember me 쿠키를 만들 던 시점은 로그인을 하던 시점이기 떄문이다. 로그인을 하기 때문에 인증 객체가 만들어진다. 그리고 이런 정보가 Reme..
이 포스팅은 인프런 정수원님의 강의를 복습하며 정리한 글입니다. Logout 일전에 Login은 사용자 인증이 완료되면, 인증 객체를 만들고 Security Context에 저장했고, 또한 인증 객체 관련해서 세션을 생성해서 JSESSION ID를 내려주면서 구현했다. Logout 기능을 구현해주기 위해서는 Login에서 했던 것들을 하나하나 무효화해주면 된다. Security Context에 있는 인증 객체 삭제 세션 무효화 쿠키 정보 삭제 스프링 시큐리티의 Logout API를 사용하면, 위의 과정들을 하나하나 처리할 수 있는 것은 물론이고, 로그아웃 후 리다이렉트 하는 위치까지 지정할 수 있게 된다. 실제로는 위와 같은 일을 하는 것으로 이해를 할 수 있겠다. Spring Security Logou..
이 게시글은 인프런 정수원님의 강의를 복습하며 작성한 글입니다. Spring Security Login 기능 Spring Security는 Login 기능을 제공해준다. Spring MVC의 필터나 인터셉터 기능을 이용해서 로그인 기능을 구현할 수도 있으나, Spring Security가 제공하는 Login 기능을 이용하면 더욱 더 쉽게 처리를 할 수 있게 된다. 간단히 정리하고 들어가보면 Spring Security Login 기능은 필터를 기준으로 처리가 되고, 인증이 완료되면 이를 바탕으로 인증 객체가 만들어진다. 그리고 만들어진 인증 객체는 Security Context에 JSESSION ID와 함께 저장되고, SESSION에 Security Context는 저장된다. 그리고 사용자는 JSESSI..
이 글은 인프런 정수원님의 강의를 복습하며 정리한 글입니다. Spring Security 사용자 정의 보안 기능 앞선 게시글에서 Spring Security는 아주 기초적인 보안 기능을 제공한다고 했다. 그렇지만 아주 기초의 기초이기 때문에 그걸 그대로 사용할 수 없다. 따라서 사용자는 Spring Security가 제공하는 기능을 확장해서 사용자 정의 보안 기능을 구현해야한다. 기본적으로 Spring Security는 WebSecurityConfigurerAdapter 클래스를 이용해 보안을 설정해준다. 따라서 사용자 정의 보안 설정을 하고 싶다면, WebSecurityConfigurerAdapter 클래스를 상속한 클래스를 만들어주고, 빈으로 등록해줘야 한다. Spring Security Form 인..