지금까지 구현한 프로젝트는 ‘인증(Authentication)’을 신경쓰지 않고 구현했다. 하지만 해당 프로젝트에서 악의적으로 다른 사용자인척 게시글을 작성하는 일이 발생하면 안 된다. 따라서 인증 로직을 구현해야 한다.
이전 강의를 통해 MSA에서는 2가지 형태의 API가 있다는 걸 알았다.
클라이언트(웹, 모바일 등)가 사용하는 외부용 API
마이크로서비스끼리 통신할 때 사용하는 내부용 API
여기서 내부용 API는 마이크로서비스끼리만 통신하기 때문에 악의적인 사용자를 고려해야 할 필요가 없다. 그래서 내부용 API에서는 인증 로직이 별도로 필요하지 않다. 하지만 외부용 API는 악의적인 사용자가 요청을 조작해 보낼 수도 있기 때문에 인증 로직이 필요한 경우가 많다.
✅ MSA에서 ‘인증 로직’ 구현하는 방법
각 서비스마다 인증이 필요한 API를 가지고 있다면, 각 서비스에 인증 로직을 전부 구현해야 한다. 구체적으로 예를 들자면, 인증을 JWT로 한다고 했을 때 모든 서비스에 JWT 토큰을 검증하는 로직을 추가해야 한다. 하지만 중복된 코드가 발생하기 때문에 유지보수가 힘들어진다. 이 때문에 아래와 같이 API Gateway에만 인증 로직을 구현한다.