[Spring Security] 9. JWT 이해

개발자·2022년 6월 22일
0

Spring Security

목록 보기
9/11
post-thumbnail

JWT를 배우기 전

  • Json Web Token
  • 왜 사용되는가? 어디에 사용되는가?

Session

  • 로그인 요청시 인증에 많이 사용된다.

  • 세션ID는 다음과 같은 순서로 진행된다.
  1. web browser에서 server로 최초 접속 요청을 한다
  2. server는 세션ID목록에 세션ID를 추가하고 HTML header에 세션ID를 담아서 돌려준다.
  3. web에서는 발급받은 세션ID를 저장하고 있는다.
  4. 다음 요청부터는 세션ID와 같이 요청을 한다.
  5. 서버에서는 목록을 통해 확인을 하여 최초접속인지 아닌지를 판단한다.
  6. user 정보를 세션에 저장하고 메인페이지로 돌아간다.
  • 세션ID는 2가지 상황에서 사라진다.
  1. 서버에서 session값을 삭제시킨다.
  2. 사용자가 브라우저를 종료한다. (서버에서는 특정시간이 지나면 사라짐)
  • 세션은 다음과 같은 단점이 있다.
  1. 동접자의 수가 많을 경우 다수의 서버를 운영한다. 이때 요청을 다른 서버에 요청시에는 최초접속으로 인식할 수 있다.

=> 이것을 해결하기 위해 메모리공유서버(RAM)를 사용한다. ex)Redis

RFC 문서

  • 데이터 송수신될 때 약속된 규칙이 필요하다 --> RFC 문서(프로토콜)로 정의

  • 네트워크가 연결될 때 마다 문서가 생성된다. => 이것들이 모여서 www
    즉 인터넷은 RFC 문서로 이루어져있다 (HTTP 프로토콜)

  • 서로간의 동의가 있어야 문서가 생성된다.

JWT란?

  • JWT는 Json 객체로 안전하게 정보를 전송하기 위한 방식

  • RFC 7519

  • 디지털 서명이 되있으므로 신뢰할 수 있다(HMAC,RSA 사용)

  • 서명된 토큰에 중점을 둔다. (서명의 용도로 사용)

  • 토큰은 정보의 무결성을 확인 할 수 있게 해준다.

JWT 구조

  • 일반적인 구조 : xxxxx-yyyyy-zzzzz

  • Header, Payload, Signature 로 이루어진다

  • Header는 토큰 유형과 사용중인 서명알고리즘으로 구성된다.

  • Json은 Base64Url로 인코딩되어 JWT의 첫 부분을 형성한다.

  • Payload는 클레임을 포함하여 엔티티 및 추가 데이터에 대한 설명이다.

  • Payload 소유권 주장에는 등록, 공개 및 비공개 소유권이 있다.

  • Signature에서는 header,payload,개인 키를 HMAC으로 암호화를 한다.

0개의 댓글