ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring Boot] JWT (JSON WEB TOKEN) 간단 정리
    SpringBoot Meteor 2021. 12. 23. 14:58

    JWT가 무엇이고 어떻게 사용되는 것 인가 ?

    • 세션

    서버가 가지고있는 세션 영역

    세션영역의 값이 비워지는 경우

    1. session (서버쪽에서 session값을 날리는 경우)
    2. 사용자가 모든 브라우저를 다 닫을 때
    • 세션의 단점

    요청이 많으면 부하가 걸림 ⇒ 로드밸런싱으로 서버를 나누어서 요청을 처이함 ⇒ 1번2번3번 서버의 세션이 다 다르기때문에 1버서버세엇 인증을 받은 값이 2번서버에서는 안먹힐 수 있다.

    ⇒ 세션값을 DB에 저장 (io 발생 성능 저하 속도 엄청 느림) 모든 서버가 DB에서 세션값을 가져옴 (성능 저하)

     <메모리 서버를 사용하면 빠르게 가능 함 대표적인 예 : raddis server)
    

    하드디스크에서 데이터를 찾아오기위해 접근할 때 io가 발생한다고 한다. io는 속도가 엄청 느림.

    ⇒ 원래 왔던 서버로 다시 보내는 방식으로 해결 가능 (비효율)

    ⇒ 서버끼리 세션값을 공유해서 사용 (비효율)

    이런것들을 해결하기위해 JWT를 사용

    • JWT를 알기 전에

    OSI 7계층

    ㅡㅡㅡㅡㅡㅡㅡㅡWANㅡㅡㅡㅡㅡㅡㅡ 월드와이드 장거리 통신

    응용계층 : 스타크래프트 : 하이템플러 스킬

    프리젠테이션 계층 : 암호화 (압축)

    세션 계층 : 인증 체크

    트랜스포트 : TCP / UDP

    < TCP : 신뢰성있는 통신 데이터 잘 갔는지 안 갔는지 계속 확인함 : 게임 >

    < UDP : 보내고 싶은 데이터 무자비하게 보냄 신뢰성 없는 통신 예시 : 전화, 동영상>

    네트워크 : IP

    ㅡㅡㅡㅡㅡㅡㅡㅡLANㅡㅡㅡㅡㅡㅡㅡㅡ 로컬 통신 근거리 통신

    데이터링크 : 어떤 컴퓨터인지 찾아줌

    물리 : 전기선 같은것들

    웹은 TCP 통신을 한다.

    • 보안

    CIA

    C : 기밀성 (문서를 탈취 → 기밀성 깨짐)

    I : 무결성 (문서를 위조 → 무결성 깨짐)

    A : 가용성 (위조된 문서를 읽음 → 가용성 깨짐)

    문서를 지키는 법 : 암호화(기밀성 유지 ⇒ 가용성 확보)

    1. 열쇠(보안) 전달 문제 (암호화)
    2. 누구로부터 온 문서인지

    이 2가지의 문제만 해결 가능하면 보안이 유지된다.

    RSA(암호화)

    public key : 공개키

    private key : 개인키

    키 하나 : 시멘트리키 (대칭키) ⇒ 공개키 기반 암호화

    —전자문서 (서명 즉, 인증)로 사용 ⇒ 개인키로 잠그고 공개키로 푼다.

    — 암호화로 사용되는것은 공개키로 잠구고 개인키로 푸는 것

    <실력이 빨리 늘려면 기초를 다지고, 개념을 다져라>

    • RFC란 ?

    약속된 규칙으로 만들어진 문서

    프로토콜 : 약속된 규칙

    네트워크가 연결되면서 약속된 문서가 생긴다.

    인터넷은 RFC 문서로 만들어져있다 . (www : world wired web) 약속의 프로토콜 = http 프로토콜

    jwt 공식사이트 :

    JWT.IO

    jwt의 구조

    1. Header(헤더)

    2.Payload(정보)

    3.Signature(서명)

    xxxxx.yyyyy.zzzzz

    Base64Url : 암호화 / 복호화 가능 (디코딩 가능)

    해쉬 암호화 : 복호화 불가능

    등록된 클레임 : 발행자, 만료시간, 주제, 정중 등의 정보

    개인클레임 : 유저아이디 정보

    header : HS256

    payload : username

    signature : header + payload + 서버만 알고있는 키값

    HMAC → 시크릿키를 포함한 암호화 방식

    SHA256 → 해쉬 암호화 방식(복호화 불가능)

     

    자료출처 : 유튜브 메타코딩 Spring Security 강의

Designed by Tistory.