-
SpringBoot - JWT ( JSON WEB TOKEN ) - 개념편Spring-Boot/etc. 2022. 5. 9. 11:04
통신 : OSI 7계층
응용계층 : 프로그램 - 데이터전달
프리젠테이션 : 암호화, 압축
세션계층 : 인증체크
트랜스포트 : TCP( 신뢰성O, ACK[응답] 에 따라 통신 ) / UDP( 신뢰성X, ACK 상관X ) 통신결정
네트워크 : IP
데이터링크 : WAN / LAN
물리 : 광케이블
------전송-------> 물 데 네 트 세 프 응
보안
C ( Confidential ) : 기밀성 깨짐, 보안 노출X
I ( Integrity ) : 무결성 깨짐
A ( Availability ) : 가용성 깨짐
1. 키 전달 문제
2. 데이터 출처 문제
RSA ( 암호화 )
Public Key : 공개키 / Private Key : 개인키
- 공개키로 잠구면 개인키로 열어볼 수 있고 ( 암호화 )
- 개인키로 잠구면 공개키로 열어볼 수 있다. ( 전자서명 )
위의 2가지 문제를 RSA로 해결가능하다!
* 키하나 - 시멘트릭 키 ( 대칭 키 )
JWT
RFC란? : 데이터 전송 규칙 ( http프로토콜 )
JWT : JSON객체로 정보를 안전하게 전송하기 위한 방식, 이 정보는 디지털 서명이 되어 있으므로 신뢰!
서명된 토큰에 중점,
Header : 어떤 알고리즘을 사용해 서명했는지, ex) base64( HS256 )
Payload : 정보, ex) base64( {username: ssar} )
Signature : header, payload, secret key를 넣어 암호화 ex) base64( ( Header + Payload + secret ) * HS256 )
각각이 base64로 인코딩되어있으므로 디코딩 가능
- 서버에서 토큰을 응답받고 웹브라우저 로컬스토리지에 저장 후 서버에 요청할 때 JWT을 함께 보내줌
- 서버는 Signature을 비교하고 인증 -> 인증 후 요청데이터를 클라이언트에 전달
다른 프로토콜에서의 쿠키요청(JS의 AJAX, fetch, Axios)은 기본적으로 거부된다. 그렇기에
httpbasic 방식 : headers에 Authorization에 ID, PW 을 담아 요청
-> https방식을 써야 암호화
Bearer방식 : Authorization에 토큰을 넣는 방식
'Spring-Boot > etc.' 카테고리의 다른 글
SpringBoot - CORS 해결방안 (0) 2022.05.09 SpringBoot - JWT ( JSON WEB TOKEN ) - 코드편 (0) 2022.05.09 SpringBoot - Spring Security (0) 2022.05.06 SpringBoot - 스프링 빈의 순환 종속성 문제 (Circular Dependencies in Spring) (0) 2022.05.04 SpringBoot - @ [ 어노테이션 ] (0) 2022.05.04