입문 주차 강의를 마무리하고, JWT와 미들웨어를 배우게 되는 숙련 주차 강의를 시작하였다. 아무래도 중요 개념이 많기에 집중해서 강의를 들어보고자 한다.
Include() 메서드는 문자열에 다른 문자열이 포함되어 있는지 여부를 확인
string.includes(searchString [,position])
ex) password.includes(nickname)
Git 이란?
💡 웹 서버는 절대로 웹 클라이언트에 먼저 요청할 수 없는건가?
맞음.
1) 서버는 어떤 클라이언트가 어떤 주소로 존재하는지 모르는게 일반적이기 때문에 서버에서 먼저 클라이언트와 연결하거나 요청 할 수 없다.
2) 만약 서버가 클라이언트에게 먼저 요청하게 된다면 서버가 클라이언트가 되고 클라이언트가 서버가 되는, 역할이 반전된 상황으로 봐야 한다.
🍪 쿠키란? 웹 브라우저에 구현된 기술 중 하나. 보통 상태를 저장하기 위해서 사용. (참고)
T.M.I)
서버에서 쿠키를 노릇노릇 구워서 Response에 담아 보내면 웹 브라우저는 받은 데이터를 그대로 저장한다.
브라우저는 가지고 있는 쿠키가 있다면 서버에 Request를 할 때 항상 가지고 있는 쿠키 데이터를 포함해서 보낸다.
단, 쿠키는 별도의 암호화 없이 데이터를 그대로 주고받기 때문에 클라이언트에서 마음대로 조작하기 쉬워 보안에 취약함.
세션(Session): 쿠키를 기반으로 구성된 기술. 단, 클라이언트가 마음대로 데이터를 확인 할 수 있던 쿠키와는 다르게 세션은 데이터를 서버에만 저장하기 때문에 보안이 좋으나, 반대로 사용자가 많은 경우 서버에 저장해야 할 데이터가 많아져서 서버 컴퓨터가 감당하지 못하는 문제가 생기기 쉬움
JWT가 무엇?
header.payload.signature
의 형식으로 3가지의 데이터를 포함 (개미처럼 머리, 가슴, 배).
이 포함된 데이터여야 한다.header(머리)는 signature(배)에서 어떤 암호화를 사용하여 생성된 데이터인지 표현
payload(가슴)는 개발자가 원하는 데이터를 저장
signature(배)는 이 토큰이 변조되지 않은 정상적인 토큰인지 확인할 수 있게 도와줌
빨간색 header, 파란색 payload, 초록색 signature
https://jwt.io/#debugger-io 참조
JWT를 왜 써야 하는건가?
1. JWT가 인증 서버에서 발급되었는지 위변조 여부를 확인
2. 누구든지 JWT 내부에 들어있는 정보를 확인 (복호화)
이 암호화 된 데이터는 어떻게 쓸 수 있나?
보통 암호화 된 데이터는 클라이언트(브라우저)가 전달받아 다양한 수단(쿠키, 로컬스토리지 등)을 통해 저장하여 API 서버에 요청을 할 때 서버가 요구하는 HTTP 인증 양식에 맞게 보내주어 인증을 시도
비유하자면, 놀이공원의 자유이용권과 비슷!
회원가입: 회원권 구매
로그인: 회원권으로 놀이공원 입장
로그인 확인: 놀이기구 탑승 전마다 유효한 회원권인지 확인
내 정보 조회: 내 회원권이 목에 잘 걸려 있는지 확인하고, 내 이름과 사진, 바코드 확인