마이크로 서비스 아키텍처를 처음 설계해보면서 많은 시행착오를 겪었다.1편의 초기 설계 당시(현재는 수정되었지만) auth service는 존재하지 않았지만 추가되었다.이번 글에서는 어떤 이유로 auth service를 추가하여 keycloak을 내부로 숨기는 구조를 만들었는지에 대해 정리해보려고 한다. 1. 초기 설계이 프로젝트의 초기 설계 당시에는 위의 다이어그램에서 볼 수 있듯클라이언트가 로그인이 필요할 때 Keycloak의 로그인 페이지로 직접 리다이렉트되고Keycloak이 토큰을 발급하면 클라이언트가 이를 받아 각 서비스에 요청을 보내는 구조였다. 구현이 단순하고 Keycloak이 제공하는 기능을 그대로 활용할 수 있다는 장점이 있었다. 2. 문제를 느끼기 시작한 순간실제로 구현을 시작하면서 몇..
지난 글의 마지막에 마이크로서비스 아키텍처에서 서비스와 서비스 간의 데이터 교환 및 처리에 대한 부분을 문제로 남겼다.이번 글에서는 플랫폼 내의 이벤트 흐름을 소개하고 선택 가능한 기술들, 특정 기술의 선택 이유와적용 방법에 대해 다뤄보려고 한다. 1. 이벤트 흐름 플랫폼의 서비스 간 이벤트는 크게 네 가지 흐름으로 구성된다. 이메일 인증 완료 이벤트사용자가 회원가입 후 이메일 인증을 완료하면 Keycloak 내부에서 이메일 인증 완료 이벤트가 발생한다.Keycloak SPI가 이 이벤트를 감지하여 keycloak.email.verified 토픽으로 이벤트를 발행하고 Auth Service가 이를 구독하여 처리한다. 사용자 등록 이벤트Auth Service는 keycloak.email.verified 이..
KeycloakKeycloak은 OAuth2.0 / OIDC 기반의 오픈소스 인증 서버로SSO, MFA, Social Login 등을 쉽게 구현할 수 있다.Keycloak을 선택한 이유는 우선 Java라는 언어로 쓰여진 오픈소스기 때문에 Java Backend 개발자인 나에게 조금 더 익숙한언어로 쓰여 있고 무엇보다 인증/인가라는 시스템을 외부로 분리하고 각 서비스에서는 로그인, MFA, Social Login, 세션 관리와 같은 문제를 개별 서비스가 구현하지 않아도 되기 때문이다. 프로젝트 목표이 프로젝트의 목표는 단순히 Keycloak을 통한 인증, 인가, SSO, MFA, Social Login 적용이 아니라더 나아가 Keycloak이라는 인증/인가 시스템과 여러 서비스가 어떻게 분리되고 협력할 수..
지난 글을 통해 TLS와 버전별 mTLS의 동작 과정에 대해 살펴 보았습니다.이번 글에서는 WireShark를 통해 mTLS를 포함해 WebSocket등 어플리케이션간 네트워킹중 전송되는 패킷을 살펴 보려고합니다. Wireshark?Wireshark는 네트워크 트래픽을 캡처하고 분석할 수 있는 네트워크 패킷 분석기로 가장 대표적인 오픈소스 도구입니다.패킷 레벨까지 확인할 수 있기 때문에 네트워크 문제해결, 보안 분석, 프로토콜 동작 이해 등에 많이 사용됩니다.Wireshark는 NIC(Network Interface Card)를 통해 흘러가는 모든 패킷을 캡처하고 사람이 이해하기 쉽게 해석해줍니다. 저의 경우 클라이언트(Local PC)와의 WebSocket 통신, 원격 서버간 mTLS 패킷을 모두 캡처..