SSAFY 특화프로젝트 과정 중 내가 로그인 모듈 구현을 담당하게 되었고, 자체 로그인 시스템을 만드는 것보다 효율적으로 로그인 모듈을 구현할 수 있을 것이라 판단하여 Kakao Login API를 이용하기로 하였다. 그 때 당시 무작정 개발을 진행했는데 면접을 앞두고 복기를 하면서 면접때 관련으로 JWT 질문도 들어왔었기에 정리하고자 포스팅을 작성한다.
OAuth 2.0 이란, 인가(Authorization)과 인증을 위한 오픈 스탠다드 프로토콜로, 어플리케이션에서 다른 서비스를 연동할 수 있는 기술이다. 해당 서비스는 사용자의 모든 정보를 알려주는 것이 아닌 Token을 발급하여 해당 서비스에 부분적으로 접근할 수 있는 권한을 부여한다.
-> 토큰을 사용하게 될 경우 별도의 저장소가 필요없다. 이를 무상태,Stateless 하다고 한다. 상태정보를 저장하지 않으면, 서버는 클라이언트측에서 들어오는 요청만으로만 작업을 처리하게 된다. 이렇게 상태가 없는 경우 클라이언트와 서버의 연결고리가 없기 때문에 서버의 확장성이 높아진다.
하지만 난.. 썼다죠
Json Web Token의 약자로 인증에 필요한 정보들을 암호화시킨 토큰을 뜻한다. 사용자는 Access Token(JWT 토큰)을 HTTP 헤더에 실어 서버로 보내게 된다.
토큰을 만들기 위해서는 크게 3가지 Header, Payload, Signature가 필요하다.
-> 단점으로는 payload에 토큰 정보를 담고 있으므로 payload가 탈취된다면 정보를 볼 수 있어 중요한 데이터를 넣지 않아야한다. 또한 상태를 저장하지 않아 한번 만들어지면 제어가 불가능하다. 임의로 삭제하기가 어려워 만료시간과 같이 저장해야 한다.