2021-09-02 TIL
JWT
JWT는 JSON Web Token의 줄임말로,
JSON 데이터를 토큰화하여 안전하게 데이터를 전송할 수 있는 것을 말한다.
JWT의 구조는 Header, Payload, Signature로 구성되어 있는데,
JWT는 이를 '.'으로 연결한 XXX.YYY.ZZZ의 모습으로 나타난다.
Header
Header는 signing 알고리즘과 토큰의 타입(JWT)를 나타내며,
Payload
Payload는 말그대로 JSON의 정보들을 담고 있는데, 선점된 것(Registered claims)들이 있다,
iss(issuer)
exp(expiration time)
sub(subject)
aud(audience)
등이 이들이며, 3글자인 이유는 컴팩트함을 추구하기 떄문이다.
https://datatracker.ietf.org/doc/html/rfc7519#section-4.1
이외의 Registered claims는 위의 문서를 참고
이외에 Registered 되지는 않았지만, IANA JSON Web Token Registry에 정의되어있는 Public claims가 있으며,
나머지는 개인이 자유롭게 할 수 있는 private claims로 구분된다.
payload는 Base64Url encoded되어있다.
Signature
Signature가 JWT의 가장 중요한 부분이라고 생각하는데,
Signature은 encoded된 payload와 header, 헤더에 지정한 알고리즘, secret을 가지고 말그대로 Sign을 한다.
HMAC SHA256 알고리즘을 사용한다면, 시그네쳐는
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
의 형태를 가지게 되는 것이다.
Signature는 데이터가 전송되는 동안 Header와 payload의 변조되지 않았다는 것을 검증해주고,
private key로 토큰이 사인되었다면 보낸 사람이 누구인지까지 보장해주는 것이다.
-인증단계
-장점
-홈페이지
추구작성
Reference
MYSQL2과 MYSQL의 차이
둘다 mysqljs를 기반으로하는 API고, 지원되는 것도 비슷하다.
MYSQL에서 MYSQL2로 옮기게 되었는데,
그 이유는 MYSQL은 콜백 기반이라 promise를 사용하지 못한다는 점 떄문이다.
MYSQL2는 프로미스 기반이라 async, await로 가독성 좋게 코드를 짤 수 있다는 장점이 있다.
또한 MYSQL2는 connection pool을 사용하는데, 이것은 이전의 connection을 재사용하고 사용 이후 이를 닫지 않고 open 상태로 유지하여 MYSQL 서버와 연결하는 시간을 감소시킨다.
Reference
Nodemon
Nodemon은 Node monitor의 줄임말로 핫로딩처럼 지정한 파일들을 지켜보고 있다가
이것이 수정되면 알아서 노드 앱을 다시 시작해준다.
--watch
nodemon --watch app --watch libs app/server.js
처럼 사용하면 app, libs 디렉토리에 있는 파일들이 변경되었을떄면 다시 시작한다.
--delay
nodemon --delay 10 server.js
너무 자주 파일이 수정되거나 할때 throttle이나 지연 다시시작을 할떄 delay 파라미터를 사용한다.
Reference