JAVA(SPRINGBOOT)

[SPRING SECURITY] 시큐리티 파헤치기 (1)

본듀 2023. 3. 16. 18:57

이제껏 로그인/로그아웃은 스프링 시큐리티(Spring Security)를 이용해 구현해왔다.

어플리케이션의 보안은 가장 중요한 부분 중 하나일텐데
얇은(?) 이해를 가지고 기능 구현만 해오고 원리를 정확히 파악하지 않았다.

JWT나 OAuth 로그인 기능을 추가할 땐 매번 버벅이며 시간을 허비했다.
그래서 나는 시큐리티를 내가 가능한 범위에서 최대한 파고들어볼 생각이다.

먼저, 내가 지금껏 이해한 로그인 과정은 다음과 같다.
1. client로 부터 username과 password 정보를 받는다.
2. UserDetailsService의 loadUserByUsername을 통해
   DB에서 username을 가진 객체를 찾고 존재한다면 UserDetails객체를 생성해 반환한다.
3. 요청 받은 password와 UserDetails내의  password와 비교한다.

정말 대충이다.

다음은 시큐리티 검색시 흔히 볼 수 있는 시큐리티 동작과정이다.

시큐리티 동작 과정

보면 알 수 있듯이 나는 대략 3분의 1도 채 모르고 있는 것 같다.

얼마나 긴 시간이 걸릴지, 얼마나 이해할 수 있을지는 모르겠지만
빠른 시일내에 정리해야겠다...