Dev/Spring.SpringBoot

[SpringBoot] [Inflearn - 무료] 스프링부트 시큐리티 & JWT 강의 (Section 2)

pu3vig 2023. 2. 22. 10:51
728x90
  • target:  스프링부트 시큐리티 & JWT 강의 12 ~ 16강 (섹션 2. 스프링 시큐리티 웹 보안 이해)

 


  • method: 

이전 Section 1. 스프링 시큐리티 OAuth2.0

https://pu3vig.tistory.com/110


* Section 2. 스프링 시큐리티 웹 보안 이해

12. 스프링부트 시큐리티 12강 - JWT를 이해하기전 세션에 대해 알아보자

★ 왜 사용되나?

★ 어디에 사용되나?

- 클라이언트의 최초 요청이 서버에 도달했을 때, 서버는 리소스를 반환하면서 header에 세션 ID를 추가하여 반환

- 클라이언트는 이후 요청 시, 세션 ID를 가지고 요청

- 서버는 세션 ID 목록을 보유하고, 클라이언트가 요청 시, request header에 있는 세션 ID와 대조

- 아래 3가지 경우에 해당하는 경우 세션 ID는 더이상 사용되지 않음

  • 서버에서 세션 삭제 (서버의 세션 ID 목록 초기화)
  • 클라이언트가 전체 브라우저 종료 (더이상 request header에 세션 ID를 포함하지 않음)
  • 요청이 30분간 없는 경우, 서버에서 세션 ID 삭제

- 세션은 일반적으로 로그인 인증을 위해 사용

- 최초 요청 이후 세션 ID를 발급받고, 로그인을 하면, 서버에서는 세션 ID + 유저 정보를 보유

- 이후 사용자의 인증이 필요한 요청마다 세션 ID 목록에서 해당 세션 ID의 유저 정보를 확인

- 유저 정보가 있는 경우, 로그인 완료 클라이언트로 인증

- 서버가 여러대인 경우, 로드밸런싱(=클라이언트 요청 부하 분산)을 통해서 클라이언트 요청이 분산되는 경우, 세션 ID를 서로 다른 서버에서 확인할 수 없음

- 따라서 서버들은 하나의 메모리 공유 서버(ex. Redis)를 사용하고, 메모리 공유 서버의 RAM에 세션 ID 값을 저장하며, 클라이언트 요청은 메모리 공유 서버의 세션 ID를 확인하여 처리


13. 스프링부트 시큐리티 13강 - JWT를 이해하기전 TCP에 대해 알아보자

- OSI 7계층에 따른 데이터 전송 기본 이해 (응용 -> 물리 ---------- <전송> ---------- 물리 -> 응용)

(응용 계층 - 프레젠테이션 계층 - 세션 계층 - 트랜스포트 계층 - 네트워크 계층 - 데이터링크 계층 - 물리 계층)

출처:&nbsp;http://wiki.hash.kr/index.php/OSI_7_%EA%B3%84%EC%B8%B5


출처:&nbsp;http://wiki.hash.kr/index.php/OSI_7_%EA%B3%84%EC%B8%B5


14. 스프링부트 시큐리티 14강 - JWT를 이해하기 전 CIA에 대해서 알아보자

- CIA (= Confidentiality(기밀성) / Integrity(무결성) / Availability(가용성))

- 가용성을 위한 암복호화 키 전달 문제(발신지에서 암호화한 키값으로 복호화할 때 복호화 키에 대한 정보 전달 문제)

- 위변조 문제(발신지의 정보가 명확한지, 수신된 정보가 정확한에 대한 문제)


15. 스프링부트 시큐리티 15강 - JWT를 이해하기 전 RSA에 대해서 알아보자

- 비대칭키: Public Key (공개키) / Private Key (개인키)

- 대칭키: Symmetric Key (암호화/복호화 키가 동일)

- RSA key cryptosystem은 비대칭키 알고리즘으로 인터넷뱅킹 대부분이 RSA-2048 암호화 사용

- RSA는 해당 알고리즘을 개발한 Ron Rivest / Adi Shamir / Leonard Adleman의 성을 따서 지음

  (참고로 그 이전에 영국 GCHQ에 해당 알고리즘을 개발한 수학자가 있었으나, 공식적으론 위 3명)

  출처: https://ko.wikipedia.org/wiki/RSA_%EC%95%94%ED%98%B8

 

RSA 암호 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. RSA[1] 암호는 공개키 암호시스템의 하나로, 암호화뿐만 아니라 전자서명이 가능한 최초의 알고리즘으로 알려져 있다. RSA가 갖는 전자서명 기능은 인증을 요구

ko.wikipedia.org

- A / B 간의 데이터 전송 시, 아래의 상황에 따라 전자서명/인증 또는 암호화의 2가지 방식으로 사용

  • A의 개인키로 Encryption(암호화)하여 데이터 전송 후, B는 A의 공개키로 Decryption한 경우,  A의 개인키로 암호화 하였으므로, 오직 A만이 해당 문서를 암호화 할 수 있었으므로 전자서명/인증으로 사용
  • B의 공개키로 Encryption(암호화)하여 데이터 전송 후, B는 B의 개인키로 Decryption한 경우B의 개인키로 복호화 하였으므로, 오직 B만이 복호화 가능한 데이터 였으므로 암호화로 사용

16. 스프링부트 시큐리티 16강 - JWT를 이해하기 전 RFC 문서란

- RFC의 기원은 아르파넷(ARPANET) 부터입니다. 동영상에서 벨 연구소로 했는데 참고해주세요.

http://wiki.hash.kr/index.php/RFC

 

RFC - 해시넷

RFC(Request for Comments)는 IETF(Internet Engineering Task Force)에서, 인터넷에서 기술을 구현하는 데에 필요한 절차 등을 제공하는 공문서 간행물이다. 알에프씨라고 읽는다. RFC(Request for Comments)는 인터넷 연

wiki.hash.kr

- HTTP 통신을 함에 있어서 상호 규약을 정한 문서

- 상호 통신 규약이 늘어남에 따라 RFC 문서 번호가 증가하고 이러한 네트워크 망이 구성된 것을 www(World Wide Web) Internet

- http란 RFC 문서에 따른 상호 통신 규약

- JWT(Json Web Token)은 위의 RFC-7519을 표현했음을 확인

출처: https://jwt.io 메인 화면


마지막 Section 3. 스프링 시큐리티 JWT 서버구축

https://pu3vig.tistory.com/112


  • warning: 

개발/프로그래밍 > 백엔드 > 스프링부트 시큐리티 & JWT 강의

[2023.02.22 기준] - 해당 강의 무료 시청 가능

추후 강의 유/무료가 바뀌거나 강의 내용이 업데이트 될 수 있음


  • source:

https://www.inflearn.com/

 

인프런 - 미래의 동료들과 함께 성장하는 곳 | IT 정보 플랫폼

프로그래밍, 인공지능, 데이터, 마케팅, 디자인, 엑셀 실무 등 입문부터 실전까지 업계 최고 선배들에게 배울 수 있는 곳. 우리는 성장 기회의 평등을 추구합니다.

www.inflearn.com

http://wiki.hash.kr/index.php/OSI_7_%EA%B3%84%EC%B8%B5

 

OSI 7 계층 - 해시넷

OSI 7 계층(OSI 7 Layer) OSI 7 계층(OSI 7 Layer)는 네트워크 프로토콜이 통신하는 구조를 7개의 계층으로 분리하여 각 계층간 상호 작동하는 방식을 정해 놓은 것 이다. 이는 ISO(국제표준화기구)에서 개

wiki.hash.kr

https://jwt.io/

 

JWT.IO

JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.

jwt.io

 

728x90