목록스프링 시큐리티 (3)
seok의 패치노트

아래 사진과 같이 공격자가 우리에 was에 접근하게 되어 jsessionid를 가진 상태에서 클라이언트에게 자신의 jsessionid 를 몰래 넘겨 클라이언트가 인증처리를 한 후 부터는 공격자와 클라이언트가 같은 jsessionid를 가지고 세션을 공유하기에 공격자가 세션이 필요한 영역에 접근할 수 있는 문제가 있다. 이것을 "고정세션 공격" 이라고 하는데 스프링 시큐리티의 API를 활용하여 이 문제를 해결 할 것이다. 왼쪽이 사용자 , 오른쪽이 공격자라고 해보자 공격자가 사용자에게 자신의 jsessionid를 몰래 넣어 추후 사용자의 인증처리를 통해 공격자 자신도 리소스에 접근할 수 있게 해볼것이다. 공격자가 자신의 세션ID를 사용자에게 넣은 모습이다. 사용자가 인증을 끝마치고 공격자는 이제 자신도 세..

프로젝트를 하다보면 같은 유저에 대해 동시접속에 대한 고민을 하게된다. 동시접속이 가능하게 해줘야하나? 아니면 기기당 하나 ??.. 이것도 아니면 그냥 무조건 하나만 접속가능하게 해야하나 여러방법이 생각이들지만 구현하기가 굉장히 까다롭다 하지만 시큐리티를 사용하면 내가 굳이 구현안해도 API를 사용하여 구현할 수 있다!! maximumSessions의 경우 1로 설정되었기 때문에 같은 유저가 동시 접속시 하나는 익셉션이 발생하여 인증처리를 강제로 막게된다.

스프링 시큐리티 필터중에 AnonymouseFilter 라는 필터가 존재한다. 이 필터의 역활은 익명의 Guest 유저를 위한 인증 객체를 생성한다!!!... 보통 사용자 로그인 상태에 따라 세션영역에 user 객체를 넣어 view 단에서 session 안에 user가 NULL 인지 아닌지에 따라 로그인버튼을 로그아웃으로 바꾸고 특정메뉴를 숨기거나 보여주거나 했었다. 스프링 시큐리티에서는 NULL 이라는 개념을 사용하면 안된다 NULL을 사용하게 되면 시큐리티를 사용하는데 제약이 생긴다(곳곳에서 검증을 진행할 때 익셉션이 발생하게됨!!) 그래서 스프링 시큐리티를 사용할 때는 이런 익명객체를 만들어 인증처리는 일단 통과하게 한 후 Guest 유저에 대한 처리를 따로 해야한다. 스프링 시큐리티를 사용하여 이..