인증/인가는 어디에 어떻게 구현해야 할까?
2023-05-30
📝 요약
인증과 인가는 무엇이고 왜 필요하며 어떻게 구현할 수 있는지에 대한 방법을 소개한 글이다.
🤔 생각하기
- 이번에 프로젝트에서 인증/인가를 구현하기 위해 여러 글을 찾다가 발견했다.
- 여러 가지 글을 읽다가 가장 나중에 읽었는데 이해하기 쉽도록 설명하고 있어서 좋았다.
- 방법으로 쿠키, 세션, 토큰을 사용하는 내용이 나왔는데 대규모 프로젝트 경험이 없기 때문에 scale out에 있어서 만나는 문제점에 대해선 잘 생각해보지 못했다.
- 인증/인가 로직을 구현하는 장소에 대해서도 알게 되었다. 막연히 컨트롤러나 서비스 내에서 구현하는 걸로 생각했는데 Interceptor와 Filter에서 작성할 수 있다는 내용이 나왔다.
- 이부분에서 NestJS의 가드가 빛을 발하는 것 같다.
- 그리고 API Gateway라는 것을 처음 알았다.
- 새로 알게된 내용을 바탕으로 앞으로 인증/인가를 구현할 때 프로젝트 상황에 맞게 구현해 나갈 수 있을 것 같다.
- 하지만 모든 상황에 완벽하게 맞는 방법은 없을 것이다. 이 방법은 어떤 장점은 있지만 어떤 단점이 있고, 저 방법은 어떤 장단점이 있고... 이래서 경험이 중요하다.
- 우선 지금 프로젝트는 상당히 짬뽕된 상태다. refresh token을 쿠키에 전달하고, DB에도 저장하기로 했으며, access token은 만료기간을 짧게 설정한다. access token이 만료되면 refresh token으로 새로 생성할 수 있다. 만료될 경우에만 DB를 사용한다.