쿠키, JWT를 사용하는 이유 / 간단한 함수 사용법

shockwave·2024년 9월 20일

TIL

목록 보기
28/49

쿠키 :
브라우저가 서버로부터 응답으로 Set-Cookie 헤더를 받은 경우 해당 데이터를 저장한 뒤 모든 요청에 포함하여 보낸다.

  • 쿠키는 사용자가 naver.com과 같은 웹 사이트를 방문할 때마다 이전에 방문했던 정보를 기억하는 데이터 파일이다.
  • 쿠키는 userId=user-1321;userName=sparta 와 같이 문자열 형식으로 존재하며 쿠키 간에는 세미콜론(;) 으로 구분됩니다.
  • 데이터를 여러 사이트에 공유할 수 있기 때문에 보안에 취약할 수 있다.
//express형식 쿠키 할당
res.cookie(name, value [, options]);
  • name : 설정할 이름 (문자열)
  • value : 할당된 값 (JSON으로 변환된 문자열 또는 객체)

JsonWebToken : 회원 인증을 위한 토큰발급
해싱 : 암호 저장시 사용되는 변환방법. 역상저항성을 가져 본래의 암호를 알아내기 힘들도록 한다. (+DB저장시 해싱된 암호가 저장된다.)

//클라이언트가 서버에게 요청을 보낼 때 서명하기 위해 사용한다. (서명 또는 인증)
jwt.sign(payload, secretOrPrivateKey, [options, callback]);
//return값 : jwt or err
  • payload : 객체 리터럴, 버퍼, 문자열 등의 유효한 JSON / 즉, 토큰에 담을 JSON 데이터
//서명된 토큰이 올바른 토큰인지 확인하기 위해 사용한다. (확인 또는 인가)
jwt.verify(token, secretOrPublicKey, [options, callback]); 
  • token : JsonWebToken 문자열

두 가지의 뒤에 들어가는 매개변수들은 같은 기능을 한다.

  • secretOrPrivateKey (생략 가능)
    secret으로 설정하거나 private으로 설정하는 키 (생략 가능)
  • options, callback
    부가옵션(expiresIn : '60s' 설정시 60초 후 토큰해제),
    콜백 : 기능에 따라 JWT or err를 리턴한다.

추가적으로 알아두면 좋은
Authorization (권한 부여 / 인가)

Authorization: <type> <credentials>

Type: Basic, Bearer, Digest등 Credentials를 인코딩/처리하고 명시한다.
Credentials: 실제 인증 토큰 또는 인코딩된 사용자 인증 자격이다.

※개념적으로 Autorization을 알고 있다면 Authorization Header를 사용한 JWT 토큰 인증(베어러 토큰)이 가능해진다.


도움을 받은 곳)
https://www.daleseo.com/js-jwt/
https://www.npmjs.com/package/jsonwebtoken
https://beeceptor.com/docs/concepts/authorization-header/

profile
생각을 많이. 입은 무겁게. 심장은 항상 열심히 뛰는 사람이 되자.

0개의 댓글