백엔드 도전기 16일차

홍성준·2022년 11월 22일

오늘 배운 내용

오늘 오전에도 역시 알고리즘이었다. 한문제를 풀었는데, 최대공약수 최소공배수문제였다. 예전에 프로그래머스 말고 백준에서 풀어봐서 쉽게 풀었다. 유클리드 호제법으로 풀었는데, 멘토님은 반복문을 통한 방법과 유클리드 호제법 두 가지 방법을 통해 풀어주셨다. 반복문은 아예 생각도 하지 못했는데, 풀이법을 보면서 왜 나는 이런 생각을 하지 못할까? 라고 항상 생각을 한다.

오후에는 1시간정도 수업을 하고 우리 전 기수의 팀프로젝트 시연에 참관을 하는 시간을 가졌다. 수업을 전에 배웠던, callback, promise, async await를 복습을 했다. 그 후 시연참관을 했는데, 와 생각보다 많은 기능들이 들어있고, 오픈API를 어느정도 알고 있어서 구현이 가능하겠구나 라고 생각했다. 앞으로 많은 고개가 있을거라고도 생각했다.

JWT(JSON Web Token)

유저를 인증하고, 식별하기 위한 토큰기반 인증이다. 이 토큰은 서버에 저장되는 것이 아닌, 클라이언트에 저장되기 때문에 메모리나 스토리지 등을 통해 세션을 관리했던 서버의 부담이 줄어든다. 토큰에는 사용자의 권한이나, 서비스를 사용하기 위한 정보가 포함되어 있다. 데이터가 많아지면 토큰이 커질 수 있으며, 토큰이 한 번 발급된 이후 사용자의 정보를 바꾸더라도 재발급하지 않는 이상 반영되지 않는다.

JWT의 진행순서는 유저가 아이디, 패스워드를 통해 웹서비스 인증 -> 서버에서 서명된 토큰을 생성해서 유저에게 전달 -> 유저가 서버에 요청을 보낼 때마다 토큰을 같이 부착해서 전송 -> 서버는 전달온 토큰을 검증 순서로 진행이 된다.

구조는 헤더와 페이로드, 시그니쳐로 이루어져 있다. 이 각 요소들은 .으로 구분된다. 헤더에는 JWT의 타입과 해시 알고리즘 종류, 페이로드에는 서버에서 첨부한 유저 정보와 데이터, 시그니쳐에는 전자서명이 담겨져 있다.

profile
안녕하세요

0개의 댓글