[Web] Web 인증 방식과 JWT에 대한 이해

node·2023년 12월 14일
0

이해 시리즈

목록 보기
6/11
post-thumbnail

들어가며


웹 사이트를 이용하며 로그인을 하고나면 로그아웃하거나 브라우저를 종료하기 전까지 내가 로그인 한 상태라는 걸 지속적으로 확인 할 수 있다. 웹 사이트는 어떻게 내가 로그인 상태인 것을 확인하는지 이때 사용하는 웹 인증 방식들에 대해서 정리하려고 한다.

본론


Web 인증

: 사용자가 누구인지 확인하고, 각 서비스에 대한 사용자의 권한을 확인하는 것

1. 사용자 인증

: 사용자의 인증 정보를 확인하여 올바른 사용자인지 인증하는 것

  • ID/PW 기반 로그인
    : 서버에 저장된 ID와 PW를 기반으로 사용자 인증

  • 소셜로그인 (Oauth2)
    : Google, Naver, Kakao 등 타 사이트를 통한 소셜 기반 사용자 인증

  • 이메일 인증
    : 사용자가 이용중인 이메일을 통해 사용자 인증

  • 휴대폰 인증
    : 사용자가 이용중인 휴대폰을 통해 사용자 인증

  • 다중 인증요소(MFA)
    : ID/PW에 추가로 OTP등 여러 요소를 요청하여 인증

2. 세션 관리

: 로그인 한 사용자의 정보를 일정 시간 유지시켜 권한을 확인하는 것

  • HTTP Session

    • 사용자의 인증 정보를 검증하여 Session ID를 생성하여 쿠키에 담아 사용자에게 전달
    • 사용자에 쿠키에는 세션 ID만 존재하고 세션에 담긴 정보는 서버측에서 관리되며 갱신 및 정보 변경을 서버에서 담당한다.
  • HTTP Cookie

    • 사용자의 인증 정보를 검증하여 쿠키에 인증 정보를 담아 사용자에게 전달
    • 쿠키에 있는 인증 정보를 서버에서 읽어 사용하는 방식으로 보안 문제에 취약 할 수도 있어
      민감한 정보를 다루는 경우 HTTPS와 같은 보안 프로토콜을 사용해야 한다.
  • HTTP Header

    • 사용자의 인증 정보를 암호화된 방식으로 사용자에게 전달
    • HTTP 요청시 Request Header에 인증 값을 포함하여 요청하는 방식

JWT(Json Web Token)

: JWT는 웹 표준으로 데이터를 JSON 객체로 사용해 편리하게 사용자 인증을 확인하는 토큰 기반의 인증 방식이다. 일반적으로 HTTP Header에 담아 사용자 인증에 사용한다.

  • JWT의 구성
    • Header: JWT의 타입과 암호화 알고리즘
    • Payload: 실제 사용하고자 하는 데이터(사용자 인증정보, 권한)
    • Signature: Header와 Payload를 조합해 비밀키로 서명된 특수한 값. 해당 값으로 데이터의 무결성을 보장
  • JWT의 장점
    • 토큰 기반의 인증 방식으로, 서버 측에 별도의 세션 저장소가 필요없음
    • JSON 형식으로 인코딩되어, 다양한 플랫폼 간에 전송이 쉬움
    • Signature를 통해 무결성을 검증하여 변조 여부를 쉽게 파악할 수 있음
  • JWT의 단점
    • JWT의 크기가 커질 경우, 네트워크 대역폭이 증가
    • JWT는 한 번 발급된 후에 내부 정보를 수정할 수 없으므로, 만료 시간을 짧게 설정해야 함
    • JWT를 탈취당하면, 해당 토큰을 이용한 모든 요청이 인증되므로, HTTPS와 같은 보안 프로토콜을 사용해야 한다.

결론


  • 로그인 시 검증하는 방식과 로그인 이후 로그인 상태를 확인하는 것을 구분하자
  • 세션을 관리하는 데에는 여러 가지 방식이 있고 각 방식에 대한 차이점이 존재한다.
profile
NOvice + DEveloper

0개의 댓글