해당 프레임워크를 사용하면 OauthService, OauthController 등에서 직접 구현하신 부분을, 단순히 yaml파일에 필요한 정보만 추가하면 동작하도록 간단하게 설계할 수 있습니다.
또한 해당 방식은 AuthorizationFilter와 AuthenticationFilter를 통과시킨 후, Access Token을 반환해주기 때문에 Core Service로 들어가지 않고 Filter단에서 인증/인가 처리를 완료합니다.
OAuth2 Client 공식문서 해당 문서에 자세한 설명이 있어서 참고하셔도 좋을 것 같습니다.
추가적으로 제가 아는 바로는 1번에서 Redirect URI를 통한 인가 후 인증 Flow도 이 프레임워크가 자동으로 해준다고 합니다.
따라서 Spring Security Client Framework 사용을 통한 코드 개선을 제안합니다.
✅ To Dos
[ ] Spring OAuth2 Client를 통한 인증/인가 flow 생성
[ ] 기존 인증/인가 로직 제거
[ ] 해당 로직과 얽혀있는 장소, 닉네임, 회사 이메일 인증 등 비즈니스 로직은 도메인 분리
⭐ OAuth2.0에 맞는 Flow 변경 및 인증(Authentication) 과정 Filter단 처리 제안
1. OAuth2.0 표준 스펙에 맞게 Flow 변경 제안
OAuth2.0 공식문서 Flow에서 확인할 수 있듯, Client(우리 서비스에선 Spring Boot API Server)가 Authorization Grant와 Access Token 발급의 주체입니다.
현재 파악한 바로는 아래와 같은 인증 Flow가 진행된다고 전달받았습니다.
카카오API 공식문서에서도 확인할 수 있듯, 모든 처리는 Service Server에서, 즉 Authorization Code는 End-User단에서 노출되면 안됩니다. 이는 OAuth2.0 스펙에 맞지 않기 때문입니다.
따라서 Redirect URL을 활용한 Authorization Code처리를 서버에서 구현하도록 변경하는 것을 제안합니다.
2. Spring Security OAuth2 Client 프레임워크 활용 제안
현재 아래와 같이 oauth2-client 프레임워크를 추가한 부분을 확인할 수 있었습니다. build.gradle
해당 프레임워크를 사용하면 OauthService, OauthController 등에서 직접 구현하신 부분을, 단순히 yaml파일에 필요한 정보만 추가하면 동작하도록 간단하게 설계할 수 있습니다.
또한 해당 방식은 AuthorizationFilter와 AuthenticationFilter를 통과시킨 후, Access Token을 반환해주기 때문에 Core Service로 들어가지 않고 Filter단에서 인증/인가 처리를 완료합니다. OAuth2 Client 공식문서 해당 문서에 자세한 설명이 있어서 참고하셔도 좋을 것 같습니다.
추가적으로 제가 아는 바로는 1번에서 Redirect URI를 통한 인가 후 인증 Flow도 이 프레임워크가 자동으로 해준다고 합니다.
따라서 Spring Security Client Framework 사용을 통한 코드 개선을 제안합니다.
✅ To Dos