노드숙련강의 2-2

·2022년 12월 19일
0

study

목록 보기
10/81
post-thumbnail

01. JWT?

  • JSON 형태의 데이터를 안전하게 교환하여 사용할 수 있게 해줍니다.

  • 인터넷 표준으로서 자리잡은 규격입니다.

  • 여러가지 암호화 알고리즘을 사용할 수 있습니다.

  • header.payload.signature 의 형식으로 3가지의 데이터를 포함합니다. (개미처럼 머리, 가슴, 배)
    때문에 JWT 형식으로 변환 된 데이터는 항상 2개의 . 이 포함된 데이터여야 합니다.

02. JWT의 형태

JWT의 형태
https://jwt.io/ 에서 JWT형태를 만들 수 있음.

  • header(머리)는 signature(배)에서 어떤 암호화를 사용하여 생성된 데이터인지 표현합니다.

  • payload(가슴)는 개발자가 원하는 데이터를 저장합니다.

  • signature(배)는 이 토큰이 변조되지 않은 정상적인 토큰인지 확인할 수 있게 도와줍니다.

03. 더 알아두어야 할 특성

  • JWT는 암호 키(Secret Key)를 모르더라도 복호화(Decode)가 가능합니다.
    변조만 불가능 할 뿐, 누구나 복호화하여 보는것은 가능하다는 의미가 됩니다!
    => payload를 누구나 열람 가능하기 때문!

  • 때문에 민감한 정보(개인정보, 비밀번호 등)는 담지 않도록 해야합니다.

04. 쿠키, 세션과 다른 점?

데이터를 교환하고 관리하는 방식인 쿠키/세션과 달리, JWT는 단순히 데이터를 표현하는 형식입니다.
=> JWT를 쿠키에 할당하여 사용.

  • JWT로 만든 데이터를 브라우저로 보내도 쿠키처럼 자동으로 저장되지는 않지만, 변조가 거의 불가능하고 서버에 데이터를 저장하지 않기 때문에 서버를 Stateless(무상태)로 관리할 수 있기 때문에 최근 많이 쓰이는 기술중 하나입니다.

  • Stateless(무상태)Stateful(상태 보존)의 차이를 간단히 설명하자면,
    Node.js 서버가 언제든 죽었다 살아나도 똑같은 동작을 하면 Stateless하다고 볼 수 있습니다.
    반대로 서버가 죽었다 살아났을때 조금이라도 동작이 다른 경우 Stateful하다고 볼 수 있겠죠.

  • 서버가 스스로 어떤 기억을 갖고 다른 결정을 하냐 마냐의 차이라고 보면 더 쉽습니다 😉

  • 로그인 정보를 서버에 저장하게 되면(SESSION, 서버가 꺼지면 정보가 날아갈 수 있기 떄문에) 무조건 Stateful(상태 보존)이라고 볼 수 있죠!

profile
개발자 꿈나무

0개의 댓글