[CS] 6.1. 로그인 유지방법(세션/토큰)

ofohj·2023년 7월 8일
0

CS

목록 보기
9/14
post-thumbnail

로그인을 한 번만 하면 다음에 안해도되는 이유는? >>

세션기반 인증방식

필수 용어

📌 세션: 서버와 클라이언트 연결이 활성화된 상태
📌 세션 ID: 웹 서버 또는 DB에 저장되는 클라이언트의 ID(사용자 식별을 위한)

구현 원리

  1. 로그인 요청

  2. 로그인 성공
    2-1. 세션 ID 생성
    2-2. 응답 헤더로 set-cookie에 세션 ID 담아 전송
    2-3. DB또는 웹 서버에 세션 ID 저장

  3. 요청 헤더로 cookie에 저장된 값 자동으로 불러옴

  4. cookie의 세션 ID 값을 확인하여 유효한지 확인

  5. 로그인 유지


또 다른 로그인 인증 기법은?

토큰기반 인증방식

개념

  • 인증 절차를 수행하기 위해 토큰을 사용하는 인증 방식
  • 기존의 세션 기반 인증 방식과 비교하여 많은 장점을 가지고 있어 널리 사용됨
    👉 웹 애플리케이션 및 API를 보호하는 데 매우 유용하며, 다양한 플랫폼과 서비스에서 적용

필수 용어

  1. 토큰(Token)
    : 인증에 사용되는 정보를 포함하고 있는 작은 조각(일반적으로 암호화됨)

  2. 발급자(Issuer)
    : 토큰을 발급하는 엔티티 또는 서비스로, 토큰의 유효성을 검증하고 사용자를 인증

  3. 페이로드(Payload)
    : 토큰에 포함된 정보(사용자의 신원, 권한, 추가 데이터 등)
    : 페이로드는 일반적으로 JSON 형식으로 인코딩되어 있으며, 클레임(claim)이라고도 불림

구현 원리

  1. 사용자가 로그인하여 인증 요청

  2. 유효한 사용자일 시 토큰 발급

  3. 서버는 발급된 토큰을 클라이언트(ex. 웹 브라우저 또는 모바일 앱)에게 전달
    👉 일반적으로 HTTP 헤더 또는 쿠키에 토큰을 포함시켜 전송

  4. 인증 및 권한 부여
    클라이언트: API 호출 또는 요청 시, 토큰을 포함하여 서버에 전송
    서버: 토큰의 유효성 검증, 페이로드의 정보를 기반으로 사용자를 인증 및 권한 부여

  5. 작업 수행
    클라이언트: 허용된 작업 수행
    서버: 토큰을 통해 사용자의 신원 식별, 요청된 작업 처리

세션 대비 장점

토큰 기반 인증은 상태를 서버에 저장하지 않고 클라이언트 측에서 처리하므로, 확장성과 분산 환경에서 유리한 점이 있다. 또한, 토큰은 자체적으로 유효성을 검증할 수 있으므로 서버 부하를 줄이고 보안성을 높일 수 있다!

실행 방식

Refresh 토큰과 Access 토큰은 토큰 기반 인증에서 사용되는 두 가지 다른 종류의 토큰입니다. 각각의 역할과 사용 방식은 다음과 같습니다:

  1. Access 토큰

    • 사용자를 인증하고 권한 부여
    • 보통 짧은 유효 기간을 가짐
  2. Refresh 토큰:

    • Refresh 토큰은 Access 토큰의 갱신 및 재발급을 위해 사용되는 토큰
    • 일반적으로 더 긴 유효 기간을 가짐(보안상 주의해야 함!!)

0개의 댓글