애플리케이션에서 인증(Authentication) 과정은 응용 로직이다.

easbui·2023년 8월 22일
0

우리가 사용하는 대부분의 서비스에는 기본적으로 애플리케이션에 대한 권한이 있는 사용자인지 확인하는 인증절차가 있다. 그것이 어떤 기술을 기반으로 이루어지던 간에 (session, jwt ...) 대부분의 서비스를 개발할 때 꼭 포함된다. 나는 대개 그렇듯이 JWT를 많이 사용하였다.

스프링을 이용해서 개발할 때는 보통 Spring security를 통해서 구현하니 굳이 생각해볼 일이 없었는데, 다른 언어와 프레임워크 상에서 DDD와 클린 아키텍처에 충실하게 구현할 때, 이 인증 과정을 어떤 층위에서 구현할 지 고민을 많이 했다.

처음에는 로그인과 회원가입 절차 역시 하나의 도메인으로 설정했으니까 사용자 정보를 나타내는 도메인 모델에 JWT 등을 포함시켜 처리하려 했으나, 구현 기술을 도메인 모델에 담는 게 넌센스란 걸 곧 깨달았다. 그렇다고 스프링에서 처럼, 이것을 완전히 인프라스트럭처 층위에서 모두 처리하게 하는 것도 무언가 찝찝하다. 결국 Request에서 JWT를 받아 어떤 사용자의 요청인지 알아 내기 위해선 데이터베이스에 접근해야 했기 때문에, 별 관련없는 두 개의 인프라스트럭처 사이에 의존성이 생기는 것이 싫었다.

그래서 적당한 선에서 타협을 보려면 응용 계층에서 인증을 처리하는 인프라스트럭처와 데이터베이스 간에 조율을 해주는 것이 필요하다. 인증 과정 역시도 서비스의 범위 내에 두면서 관리할 수 있기 때문이다.

profile
개발자 - 프로그램을 개발새발짜는 사람

0개의 댓글