OAuth 학습에 들어가기에 앞서...
기업협업에서 진행하는 프로젝트에서 소셜 로그인 파트를 맡게 되었다.앞서 동기들과 1, 2차 프로젝트를 진행하며 경매에 가까운 order 기능, 평점 분석 등 진행한 클론 사이트 들의 나름 핵심에 해당하는 로직을 구현했지만 새로운 기술이라고는 사용해보지 않았고 사실상 조금 더 고민이 필요한 로직을 구현했을 뿐이라 지나고 나서 아쉬움이 많았다.
해서 이번 프로젝트 때는 남들이 다 진행해보았던 소셜로그인과 S3를 통한 이미지 업로드 그리고 크롤링을 방어하는 부분을 최대한 학습해서 적용해보려고 하고 추가적으로 자신감이 부족해 선뜻 나서지 못한 CI&CD 부분도 후속으로 학습을 해보려 한다.
OAuth 학습 전 상태
OAuth를 통해 외부 소셜 서비스에서 발급받은 엑세스 토큰과 리프레쉬 토큰이 어떤 기능이 있으며 어떤 목적으로 활용되는지 알지 못했다.
OAuth&JWT로 소셜로그인을 구현했을 시 왜 외부에서 해당 회원에 대한 Token을 발급 받았는데 JWT 토큰을 다시 만드는지 알지 못한 채 사용하였으며, JWT를 왜 사용하는지 JWT 이전에는 어떤 방법들이 있었는지 JWT의 장, 단점에 대한 부분을 전혀 알지 못한채 방법적으로만 익혀 사용할 수 있는 정도의 상태였다.
킥오프 미팅 때 팀장님께서 JWT에 대해 단점이 명확하다고 하셨던 말과 OAuth와의 명확한 차이점을 알아보라는 말에 단순히 JWT를 사용하지 말아야 하나..? 느꼈고 그러면 그냥 서비스 제공자에게 전달 받은 엑세스 토큰과 리프레쉬 토큰을 그대로 사용해야 하는 건가라는 생각도 했던게 학습 전의 상태이다.
이에대해 팀장님이 어느 관점에서 학습이 필요한지 가이드를 주셨고 학습한 내용을 쭉 정리해보려 한다.
먼저 학습하려는 OAuth와 JWT 모두 인증 & 인가를 위한 내용이다. 학습에 앞서 인증 & 인가가 정확히 어떤 의미인지 이해하기 쉽게 정의하는 게 필요했다.
인증은 내가 또는 누군가가 실제 그 사람이 맞는지 확인하는 절차이다.
여기서 우아한 테크코스 2기 토니님의 인증 & 인가 설명 방법에 감명을 받아 조금 도용?해서 설명해보겠다.
나는 현재 선릉 위워크에서 위코드 수강 및 기업협업을 진행하고 있다.
위워크 건물을 사용할 수 있도록 등록이 된 사람이며, 사용을 위한 출입카드를 데스크에서 전달 받아야 한다.
여기서 나라는 사람은 위워크의 출입카드를 받을 수 있도록 되어있지만 내가 실제 나인지를 데스크에 확인을 시켜줄 필요가 있다.(왜냐? 나말고 다른 사람에게 내 출입카드를 건네주면 안되니까!)
이때 데스크에서는 내가 실제로 맞는지 확인을 위해 신분증을 확인하였다.
이 확인하는 절차를 인증이라고 생각하면 된다.
내가 나임을 인증하였으며, 사용을 위한 출입 카드도 받았다.
이제 위워크의 모든 층을 다 쏘다녀볼까? 아쉽게도 그럴 수 없다.
위워크는 공유 오피스로서 모든 인원이 이용할 수 있는 공용라운지 그리고 내가 소속되어있는 위코드의 전용 층 외에는 대부분이 다른 회사에서 임대하여 이용하고 있는 시스템이다.
쉽게 설명하자면 난 이 건물에서 내가 들어갈 수 있는 곳과 그럴 수 없는 곳 즉 권한이 제한되어있는 상태이다.
이때 내가 특정 층을 진입하려고 하면 내가 그 층을 들어갈 수 있는 권한이 있는지 확인하는 절차가 필요할 것이고 이 과정을 인가라고 생각하면 된다.
난 권한이 있는 공용라운지, 위코드의 전용 층에 대한 출입이 가능하니 인가 절차를 거쳐 출입이 가능할 것이고 그 외의 타 회사 층은 인가 절차를 거쳐 출입이 제한될 것이다.
OAuth, JWT를 설명하기에 앞서 기본이 되는 인증, 인가 개념을 간단히 살펴봤다. 다음 포스트 글에서는 이번 글에서 장황하게 늘어놓았던 서론을 빼고 OAuth에 대해 설명해보도록 하겠다.