[TIL-DAY27] Spring 정리 [인증/인가]

김유란·2025년 2월 5일
  • 인증과 인가

    1. 인증(Authentication)
      • 사용자가 누구인지 확인하는 과정

        ex) 로그인

    2. 인가(Authorization)
      • 사용자가 어떤 권한을 가지고 있는지 결정하는 과정

      • 반드시 인증이 선행되어야 한다.

        ex) 회원만 조회 가능한 게시글, 본인이 작성한 게시글 수정



  1. 쿠키(Cookie)

    • 웹 브라우저(Client 측)에 저장되는 데이터
    • 서버가 클라이언트의 상태를 기억하도록 도와준다.
      • 로그인 상태 유지 등에 활용된다.
    • 보안에 취약하다.
      • 민감한 정보를 저장하지 않아야한다.
      • 사용자 임의 수정이 가능하다.
    • 만료 날짜를 설정할 수 있다.
      • 세션 쿠키(브라우저 종료 시 삭제)와 영속 쿠키(지정된 기간 동안 유지)로 구분된다.
  2. 세션(Session)

    • 서버에서 중요한 정보를 보관하며 로그인을 유지하는 방법
      • SessionId를 탈취하여도 민감한 정보가 없다.
    • 만료 시간을 설정해서 탈취 문제를 최소화한다.
      • HttpSession은 최근 Session을 요청한 시간을 기준으로 만료 시간을 유지한다.
    • Session 관리
      1. 세션은 메모리를 사용한다.
        • 세션이 많아지면 서버의 장애가 발생할 수 있다.(메모리 리소스 부족)
        • 최소한의 데이터만 저장해야 한다.
      2. HttpSession은 LastAccessedTime을 기준으로 30분의 생명주기를 가지고 있다.
      3. 세션의 시간을 너무 오래 유지하여도 메모리 리소스가 부족할 수 있다.
        • 적당한 시간 설정이 꼭 필요하다.(Default 30분)
  3. Token

    • 인증/인가 과정에서 사용되며 사용자 또는 시스템의 신원과 권한을 증명하고 요청의 유효성을 검증하는 데 사용되는 디지털 문자열
    • Session과는 다르게 Client가 데이터(Token)를 저장하고 있다.
      • Stateless를 기반으로 하여 확장성이 뛰어나다.
    • Mobile과 같이 Cookie를 사용할 수 없는 경우에도 사용할 수 있다.
    • Payload는 암호화되지 않는다.
    • 만료 시간으로 Token 탈취를 대비한다.
  4. JWT

    • 인증에 필요한 정보들을 암호화시킨 JSON 형태의 Token
    • Signature를 통해 Token을 안전하게 관리한다.
    • JWT의 목적은 정보 보호가 아닌, 위조 방지에 있다.
  5. Filter

    • 공통 관심 사항을 하나의 입구에서 처리할 수 있게 만들어준다.

0개의 댓글