-
[Spring Boot] JWT (JSON WEB TOKEN) 간단 정리SpringBoot Meteor 2021. 12. 23. 14:58
JWT가 무엇이고 어떻게 사용되는 것 인가 ?
- 세션
서버가 가지고있는 세션 영역
세션영역의 값이 비워지는 경우
- session (서버쪽에서 session값을 날리는 경우)
- 사용자가 모든 브라우저를 다 닫을 때
- 세션의 단점
요청이 많으면 부하가 걸림 ⇒ 로드밸런싱으로 서버를 나누어서 요청을 처이함 ⇒ 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 : 가용성 (위조된 문서를 읽음 → 가용성 깨짐)
문서를 지키는 법 : 암호화(기밀성 유지 ⇒ 가용성 확보)
- 열쇠(보안) 전달 문제 (암호화)
- 누구로부터 온 문서인지
이 2가지의 문제만 해결 가능하면 보안이 유지된다.
RSA(암호화)
public key : 공개키
private key : 개인키
키 하나 : 시멘트리키 (대칭키) ⇒ 공개키 기반 암호화
—전자문서 (서명 즉, 인증)로 사용 ⇒ 개인키로 잠그고 공개키로 푼다.
— 암호화로 사용되는것은 공개키로 잠구고 개인키로 푸는 것
<실력이 빨리 늘려면 기초를 다지고, 개념을 다져라>
- RFC란 ?
약속된 규칙으로 만들어진 문서
프로토콜 : 약속된 규칙
네트워크가 연결되면서 약속된 문서가 생긴다.
인터넷은 RFC 문서로 만들어져있다 . (www : world wired web) 약속의 프로토콜 = http 프로토콜
jwt 공식사이트 :
jwt의 구조
- Header(헤더)
2.Payload(정보)
3.Signature(서명)
xxxxx.yyyyy.zzzzz
Base64Url : 암호화 / 복호화 가능 (디코딩 가능)
해쉬 암호화 : 복호화 불가능
등록된 클레임 : 발행자, 만료시간, 주제, 정중 등의 정보
개인클레임 : 유저아이디 정보
header : HS256
payload : username
signature : header + payload + 서버만 알고있는 키값
HMAC → 시크릿키를 포함한 암호화 방식
SHA256 → 해쉬 암호화 방식(복호화 불가능)
자료출처 : 유튜브 메타코딩 Spring Security 강의
'SpringBoot Meteor' 카테고리의 다른 글
[Spring Boot] Objects.requireNonNull 메서드 (0) 2021.12.29 [Spring Boot] @RestControllerAdvice를 이용해서 예외 처리 핸들링하기 (0) 2021.12.29 [Spring Boot] 시큐리티 회원가입시 추가정보 미기입 상태 분기처리 (0) 2021.12.23 [Spring Boot] Spring Security 시큐리티 권한 업데이트 시 동적 적용 (0) 2021.12.21 [Spring Boot] 쿼리 DSL을 이용한 서브쿼리 (0) 2021.12.17