Fullstack-Study-241204-250625

커리큘럼(12-30/변경)

01. Java
02. git
03. Database 
04. Jsp [Server]

05. HTML,CSS 
07. JS
06. 미니프로젝트-2W

08. SpringFramework , SrpingBoot 
19. 중간프로젝트 (1M)
10. Linux 명령어
11. AWS
12. Docker
13. Kubernetes
14. React JS
15. JWT (v)
16. App - Android
17. 최종프로젝트 (1M) (v)

스프링 시큐리티 JWT

JWT(JSON Web Token)

세션방식

  1. 로그인 요청
  1. 서버에서 로그인 정보 확인 후 세션 생성
  1. 서버에서 클라이언트로 sessionId 전송

  2. 클라이언트는 브라우저의 쿠키 저장소에 sessionId 저장

  3. 클라이언트의 이후 요청에 sessionId 자동 포함

  1. 웹서버는 sessionid를 확인
  1. 일치하면 인증 성공 -> 요청처리

JWT방식

  1. 로그인요청

  2. DB에서 로그인 정보 확인 후 JWT발급

  3. 서버에서 클라이언트로 JWT 전송

  4. 클라이언트는 JWT 저장

  1. 이후 서버 요청시 필요한데이터 + JWT로 요청

  2. 서버는 JWT 검증

  1. 검증 성공 시 결과데이터 반환

대칭키 암호화

비대칭키 암호화

전자서명(공인 인증)

JWT 토큰 모형

Base64Url(header ).
Base64Url( payload ).
Base64Url( HMACSHA256(header + "." + payload, secret) )

1. 헤더(문서의 정보)

{
  "alg": "HS256",  // 서명알고리즘
  "typ": "JWT" // 토큰 타입입
}

2. 정보(Payload)

{
  "sub": "user123", // 등록된 클레임
  "role": "admin", // 비공개 클레임
  "exp": 1717430400 // 등록된 클레임
}

3. 서명(Signature)

HMACSHA256(
  base64UrlEncode(header) + "." + base64UrlEncode(payload),
  서버가 발행한 비밀키
)
  • HS256 => 하나의 비밀키로 서명 및 검증
  • RS256 => 개인키로 서명, 공개키로 검증