NestJS 로그인 인증 인가 처리

<aside> 💡 기존의 토큰을 사용한 로그인 인증인가 방식에서 보안을 위한 코드 리팩토링 과정을 기록합니다.

</aside>

무엇이 문제인가?

로그인 인증,인가 처리를 진행하면서 우선 제한된 시간 속에서 구현을 마치기 위해서 보안적으로는 신경을 거의 쓰지 못해 탐탁치가 않았습니다.

그리고 현재 저희 모락 서비스는 프론트엔드분들께서 할 일이 굉장히 많으시고, 백엔드는 서비스 API 작업이 대부분 끝난 상태이기 때문에 많은 고통을 받았던 인증, 인가에 대해서 좀 더 공부하고 어떻게 하면 프론트엔드분들이 더 쉽게 더 좋은 방법으로 이 문제를 같이 해결할 수 있을지에 대해 생각하게 되었습니다.

현재 상황

현재 우리 모락 서비스는 로그인을 하면 액세스 토큰이랑 리프레쉬 토큰을 쿠키로 심어주고 있습니다.

여기서 이제 유저들이 그룹에 가입하거나 모각코를 개설한다는 등 해당 요청을 보낼 때는  그 회원을 알아보기 위해서 useGuard로 처리하고 있습니다.

이러기 위해서 클라이언트에서는 저러한 행위의 api요청을 보낼때 헤더에 bearer token으로 액세스 토큰을 심어서 보내주게 되어 해당 사용자에 대한 인가처리를 하고 있습니다.

그런데 이때 액세스토큰에 httponly를 걸면 프론트분들이 bearer token으로 액세스토큰을 줄 수가 없습니다. 이유는 프론트엔드단에서 httponly를 걸어서 주면 해당 쿠키를 js로 접근할 수가 없기 때문에 추출해서 함께 헤더에 포함해서 요청을 할 수 없는 상황이 발생합니다.

1, 쿠키를 httponly를 걸어서 주면 클라이언트에서 요청처리를 어떻게 하는지?

  1. Secure을 걸면 https가 아닌 로컬호스트 환경에서는 어떻게 진행하는지?

슬랙에서 캠퍼분에게 물어보다.