항해99 7일차 WIL

홍당무·2022년 11월 20일
0

JWT

이번 미니 프로젝트를 진행하면서 회원가입/로그인 기능을 구현하는 단계가 있었다. JWT는 유저를 인증하고 식별하기 위한 토큰기반 인증이다. RFC 7519에 자세한 명세가 나와 있다. 토큰은 세션과는 달리 서버가 아닌 클라이언트에 저장되기 때문에 메모리나 스토리지 등을 통해 세션을 관리했던 서버의 부담을 덜 수 있다.

JWT의 특징은 토큰 자체에 사용자의 권한 정보나 서비스를 사용하기 위한 정보가 포함된다는 것이다. JWT를 사용하면 RESTful(GET, POST, PUT, DELETE) 과 같은 무상태인 환경에서 사용자 데이터를 주고 받을 수 있게된다. 세션을 사용하게 될 경우, 쿠키 등을 통해 식별하고 서버에 세션을 저장했지만 JWT와 같은 토큰을 클라이언트에 저장하고 요청시 단순히 HTTP 헤더에 토큰을 첨부하는 것만으로도 단순하게 데이터를 요청하고 응답을 받아올 수 있다.

일반적으로 JWT를 사용하면 아래와 같은 순서로 진행된다.

JWT는 JSON데이터를 Base64 URL-safe Encode를 통해 인코딩하여 직렬화한 것이 포함되며 토큰 내부에는 위변조 방지를 위해 개인키를 통한 전자서명도 있다. 따라서 사용자가 JWT를 서버로 전송하면 서버는 서명을 검증하는 과정을 거치게 되며 검증이 완료되면 요청한 응답을 돌려준다.

API

API는 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘이다. 가령, 기상청의 소프트웨어 시스템에는 일일 기상 데이터가 들어있다. 휴대폰의 날씨 앱은 API를 통해 이 시스템과 '대화'하여 휴대폰에 매일 최신 날씨 정보를 표시한다.

API는 Application Programming Interface의 준말로 API의 맥락에서 애플리케이션이라는 단어는 고유한 기능을 가진 모든 소프트웨어를 나타낸다. 인터페이스는 두 애플리케이션 간의 서비스 계약이라고 할 수 있다. 이 계약은 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의한다. API문서에는 개발자가 이러한 요청과 응답을 구성하는 방법에 대한 정보가 들어있다.

후기

월요일부터 미니프로젝트에 돌입해 각자 역할을 나누고 과정을 공유하며 어려운 부분들을 보완하는 작업을 했다. TIL에서 언급했듯, 우여곡절이 있었고 그 것을 극복하는 과정 전체가 '배움'이었다. 시간이 지남에 따라 마음가짐도 시시각각 변하는게 느껴졌다.

처음 가졌던 마음은 '내가 잘 해낼 수 있을까?' 조금 지나니 더닝크루거 효과처럼 근거없는 자신감이 생기기 시작했다. '멋진 결과물을 만들어내자!' 라는 생각도 했던 것 같다.

하지만 개발의 세계는 냉정했고 방심의 대가는 약 20여 시간의 트러블 슈팅이었다. 이 후, 안정을 찾았을 때 쯤 극복한 문제들을 다시 볼 수있었고 앞으로의 개발을 향한 마음가짐도 정립되었다.

profile
공부하는 백엔드 개발자

0개의 댓글