1 로그인 요청: 사용자가 애플리케이션에서 카카오 로그인 버튼을 클릭한다.
2 리다이렉션: Spring Security는 사용자를 카카오 인증 서버의 로그인 페이지로 리다이렉트한다.
3 카카오 로그인: 사용자는 카카오 로그인 페이지에서 자신의 아이디와 비밀번호로 로그인한다.
4 인증 코드 발급: 로그인이 성공하면, 카카오는 사용자를 애플리케이션으로 다시 리다이렉트한다. 이 때 URL에 'code'라는 인증 코드가 함께 전달된다.
5 토큰 요청: 애플리케이션 서버는 이 인증 코드를 사용하여 카카오 토큰 서버에 엑세스 토큰을 요청한다.
6 엑세스 토큰 발급: 카카오는 인증 코드를 확인하고 유효하다면 엑세스 토큰을 애플리케이션에 발급한다.
7 사용자 정보 요청: 애플리케이션은 엑세스 토큰을 사용하여 카카오에 사용자 정보를 요청한다.
8 사용자 정보 저장 및 인증: 애플리케이션은 받은 사용자 정보를 기반으로 사용자를 인증하고, 필요하다면 사용자 정보를 애플리케이션 DB에 저장한다.
9 세션 생성: Spring Security는 사용자를 위한 세션을 생성하고, 이를 통해 사용자의 로그인 상태를 유지한다.
DefaultOAuth2UserService - OAuth2 로그인 프로세스 중에서 사용자 정보를 로드할 때 호출
1 사용자 정보 요청: 애플리케이션은 엑세스 토큰을 사용하여 카카오에 사용자 정보를 요청한다.
즉, 엑세스 토큰을 받은 후 해당 토큰을 사용해서 제공자(카카오)로부터 사용자 정보를 가져올 때 CustomOAuth2UserService는 호출된다.
CustomOAuth2UserService는 주로 다음과 같은 작업들을 수행하는데 사용된다:
1 제공자로부터 반환받은 사용자 정보를 파싱한다.
2 필요한 경우 추가적인 사용자 정보 변환 또는 매핑 작업을 수행한다.
3 애플리케이션의 데이터베이스와 연동하여 사용자 정보를 저장하거나 업데이트한다.
4 사용자의 권한, 속성 등을 설정하여 Spring Security Context에 설정한다.