TIL/Spring

TIL 2024-11-13 (Spring 숙련 - 2주차)

myoma 2024. 11. 13. 21:19

- 학습한 내용 

  • Cookie
  • Session
  • Token
  • JWT
  • Filter

 

 


  •  Cookie
    • 주로 사용자 세션 관리(로그인, 장바구니, 접속시간)나 광고 트래킹(사용자 행동) 등의 목적으로 사용.
    • 웹 브라우저에 저장되는 데이터
    • Cookie에 담겨있는 값으로 인증/인가 를 진행한다.
    • 서버가 클라이언트의 상태를 기억하도록 도와준다.
      • 로그인 상태 유지 등에 활용된다.
    • 보안에 취약하다
      • 민감한 정보를 저장하지 않아야한다.
      • 사용자 임의 수정이 가능하다.

 

  • Session
    • 서버에서 중요한 정보를 보관하며 로그인을 유지하는 방법
      • SessionId를 탈취하여도 민감한 정보는 없다.  
    • 만료 시간을 설정해서 탈취 문제를 최소화한다.
      • HttpSession은 최근 Session을 요청한 시간을 기준으로 만료 시간을 유지한다.
    • 동작 순서

로그인
로그인 이후 요청

 

  • Token
    • 인증/인가 과정에서 사용되며 사용자 또는 시스템의 신원과 권한을 증명하고 요청의 유효성을 검증하는데 사용되는 디지털 문자열
    • Session과는 다르게 Client가 데이터(Token)를 저장하고 있다.
      • Stateless를 기반으로 하여 확장성이 뛰어나다.
    • Mobile과 같이 Cookie를 사용할 수 없는 경우에도 사용할 수 있다.
    • Payload는 암호화되지 않는다.
    • 만료 시간으로 Token 탈취를 대비한다.
    • 단점
      • Cookie/Session 방식보다 Token 자체의 데이터 용량이 많다.
        • 요청이 많아지면 그만큼 트래픽이 증가.
      • Payload는 암호화되지 않아서 중요한 데이터를 담을 수 없다.
      • Token을 탈취당하면 대처하기 어려워 만료 시간을 설정한다.

 

  • JWT
    • 인증에 필요한 정보들을 암호화시킨 JSON 형태의 Token
    • Signature를 통해 Token을 안전하게 관리한다.
    • JWT의 목적은 정보 보호가 아닌, 위조 방지에 있다.
    • 장점
      • 서버의 수평 확장성이 높아진다.
      • DB를 조회하지 않아도 된다.
      • Cookie가 없는 다른 환경에서도 인증/인가를 적용할 수 있다.
    • 단점
      • 민감한 정보를 다루지 못한다.
      • Token의 길이가 길어서 트래픽이 증가하면 네트워크에 부하가 증가한다.
      • 클라이언트 측에서 Token을 관리하기 때문에 탈취당하면 대처하기 어렵다.

 

  • Filter
    • 공통 관심 사항을 하나의 입구에서 처리할 수 있게 만들어준다.
    • 핵심 기능
      • 비지니스 로직
      • 부가 기능
    • 주요 메서드
      • init()
        • 초기화하는 메서드
      • doFilter()
        • Client에서 요청이 올 때 마다 doFilter() 메서드가 호출.
          • 내부에 필터 로직을 구현하면 된다.
        • WAS에서 doFilter()를 호출해주고 하나의 필터의 doFilter()가 통과된다면 Chain에 따라 순서대로 호출
        • 더 이상 호출할 Filter가 없으면 Servlet이 호출횐다.  
      • destroy()