조원님의 도움 ㅠㅠ
궁금했던 부분들도 있었는데, 중요한 부분들을 깔끔하게 알아보신 부분이 있어서 알려주셨다..ㅜㅜ
쿠키, 세션, 토큰 알려주신 것
쿠키
쿠키 라는 것이 있다. -> 쿠키는 그냥 쿠키다. 내가 만든 쿠키라고 하셨다 ㅋㅋㅋㅋ
로컬에 가지고 있다가 참조한다.
환경 변수 라는 것이 중요한데,
다크모드, 로그인정보 등이 계속 그 사이트에서 상세페이지 등으로 넘어갈 때
다 풀리게 된다면 엄청 귀찮아 질 것이다.
그래서 쿠키로 넘겨준다.
세션
원래는 쿠키만 있었다.
그러나 쿠키에 ID 정보나 기타 중요한 정보를 넣어놓게 되었을 때
누군가가 탈취해서 내 권한을 이용한다면, 큰 문제가 될 것이다.
그래서 세션이라는 것이 생겨났다고 한다.
세션은 DB에 ID,PW 같은 것은 대놓고 쿠키에 쓰지 말아야지,
이런 생각으로 만들어진 것이다.
쿠키를 기반하지 않는 것은 아니다. 그러나 사용자 정보 파일을 브라우저에 대놓고 저장하는 것이 아니라
서버에서 관리한다.
그래서 서버 메모리를 많이 차지하게 되고
서버 비용과도 연결된다.
-> 서버는 데이터 입력, 데이터 조회 시에 비용 발생
토큰
토큰은 클라이언트가 서버 접속 할 때
서버에서 인증 됐다는 토큰을 부여한다.
진짜 사용자 맞냐는거다.
확인 가능? 응 그럼 싸인. 그래서 시크릿 키 같은거 있고.
로그인 요청을 하면
클라이언트에게 서버가 토큰을 생성해서 준다.
토큰을 저장하고 있다가,
토큰을 검증해서 응답을 해주는 것이다.
그래서 모든 정보를 DB에서 관리하는 것이 아니라서
성능이나 유지비용 등에 문제를 줄일 수 있다.
JSON Web Token
= 인증에 필요한 정보들을 암호화시킨 JSON 토큰.
Access Token, Refresh Token
액세스 토큰은 클라이언트가 가지고 있는 유저정보가 담긴 토큰이다.
클라이언트에게 요청이 오면 이 토큰에 있는 정보를 활용해서 응답해준다.
리프레시 토큰은 새로운 액세스 토큰 발급해주려고 사용하는 것이다.
이 토큰이 데이터베이스에 유저정보랑 같이 저장되어있다.
그래서 액세스 토큰을 유효기간을 훨씬 짧게 한다.
액세스 토큰이 만료 된다면, 리프레쉬 토큰을 통해 다시 부여받는다.
리프레쉬 토큰까지 탈취 당하면 어떻게 하냐?
세션 방식 처럼 DB에서 정보를 삭제요청을 하면 된다.
이 방법은 카드사의 비유로 설명을 해주셨다.
카드 잃어버려서 바로 누가 쓰면 그거는 어쩔 수 없는 거지만,
분실신고는 할 수 있다.
분실신고 하면 카드사에서 카드를 일시정지 해주거나 해서 데이터를 끊을 수 있다.
마찬가지로 세션도 그렇다.
쿠키와는 다르게 데이터를 끊어주어서
데이터를 보호해주는 것이다.