이제껏 로그인/로그아웃은 스프링 시큐리티(Spring Security)를 이용해 구현해왔다. 어플리케이션의 보안은 가장 중요한 부분 중 하나일텐데 얇은(?) 이해를 가지고 기능 구현만 해오고 원리를 정확히 파악하지 않았다. JWT나 OAuth 로그인 기능을 추가할 땐 매번 버벅이며 시간을 허비했다. 그래서 나는 시큐리티를 내가 가능한 범위에서 최대한 파고들어볼 생각이다. 먼저, 내가 지금껏 이해한 로그인 과정은 다음과 같다. 1. client로 부터 username과 password 정보를 받는다. 2. UserDetailsService의 loadUserByUsername을 통해 DB에서 username을 가진 객체를 찾고 존재한다면 UserDetails객체를 생성해 반환한다. 3. 요청 받은 passw..