쿠키클라이언트 : 브라우저
서버: 웹서버
아이폰 앱 / 웹 서버
안드로이드 앱 / 웹 서버
2008년도 아이폰/안드로이드는 브라우저가 아니라서 쿠키가 없음
쿠키가 없어
앱
앱에서 서버로 그냥 데이터를 전송하면 누군지 모르니까 id랑 pw를 한묶으로 같이 보냄
결론
웹
최초 요청 : ID / PW
그 다음 요청 : 제목 / 내용
그 다음 요청 : 제목 / 내용
앱
최초 요청 : ID / PW
그 다음 요청 : ID / PW / 제목 / 내용
그 다음 요청 : ID / PW / 제목 / 내용
ID/PW는 앱 측에서 기억해논다
계정
토큰이 발명되기 전,
토큰이 발명되고 나서,
id/pw -> 누군지 신원확인
토큰 -> 누군지 신원확인
해킹 당하면, id/pw도 털리지만 토큰도 털림
DB의 member 테이블에
SELECT * FROM member
WHERE token = '123412341234';
세션값이 있는지 없는지
토큰의 단점
그러나 100% 정답은 아님.
세션
브라우저 - 로그인 여부를 DB조회 없이 하고싶은데
토큰을 사용하면 DB사용을 안할 수가 없어~
내가 글을 1000번 쓰면 DB에서 select를 1000번 해야하는거지.
SELECT * FROM member
WHERE token = '123412341234';
여기 토큰 값에 의미있는 데이터를 저장할 수 없나?
있지~ 여기서 나온게 바로 JWT!
옛날토큰
JWT
https://www.base64decode.org/
여기서 encode를 하면 아래와 같이 토큰이 발행이 된다.
-> Hash(시크릿키)
-> JWT
=== 옛날 토큰 방식 ===
번호: 1
아이디 : abcd
비번 : 1234
이름 : 홍길동
나이 : 22
토큰 : 11112312314432523
SELECT * FROM member
WHERE token = '11112312314432523';
=== 새 토큰 방식 ===
"번호": 1
"아이디" : "abcd"
"비번" : 1234
"이름" : "홍길동"
"나이" : 22
"토큰" : "11112312314432523"
WHERE token = '11112312314432523';
새 토큰방식은 이런거 하지 않아도 됨
https://www.base64decode.org/
여기서 토큰을 decode를 하면
eyJpZCIgOjEsICJuYW1lIjogIu2Zjeq4uOuPmSIsICJhZ2UiOiAyMn0=
{"id" :1, "name": "홍길동", "age": 22}
정보가 나온다.
그러나 단순 변환을 한거라서 데이터를 신뢰할 수 없대.
JWT
JWT 만들때 유효기간 설멍
member