로그인 인증 방법

안대현·2022년 5월 23일
1

대표적인 로그인 방법 3가지에 대해 알아보겠다.


1. 세션 방식

  • Session VS Cookie

    세션 : 일정 시간동안 같은 사용자로부터 들어오는 요구를 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술!
    쿠키 : 특정 웹 사이트를 방문했을 때 만들어지는 정보를 담는 파일

=> 쿠키는 방문자의 정보를 방문자 컴퓨터의 메모리에 저장하고, 세션은 방문자의 요청에 따른 정보를 서버에 저장.

  • 세션 기반 인증의 동작 방식
  1. 사용자가 로그인을 요청하고 아이디, 비밀번호가 유효하다면 세션이 서버의 메모리에 저장된다.
  2. 서버에서 세션 아이디를 쿠키에 담아 브라우저로 전달한다.
  3. 브라우저는 모든 요청에 쿠키를 함께 전송한다.
  4. 서버는 브라우저가 보낸 세션 아이디로 서버 메모리에서 사용자의 세션 정보를 식별하고, 유효한 경우 요청에 따른 응답을 제공한다.

  • 세션 기반 인증 방식의 장단점

장점
서버에서 클라이언트의 상태를 유지하므로, 로그인 여부 확인이 용이하다.
클라이언트가 임의로 정보를 변경하더라도 서버에서 상태 정보를 가지고 있으므로 상대적으로 안전하다.

단점
서버에서 클라이언트의 상태를 모두 유지해야 하므로, 메모리 또는 DB에 부하가 심해질 수 있다.
멀티 디바이스 환경에서의 연동을 신경써야 한다.
사용자가 많아질수록 세션 관리가 어렵다.

2. OAuth 2.0

  • Access Token과 Refresh Token

    Access Token : 사용자 인증을 위한 토큰
    Refresh Token : access token이 만료된 경우, 갱신을 위한 토큰

  • OAuth 2.0 인증의 동작 방식
    아래 사진은 카카오에서 제공하는 Kakao 로그인 API의 인증 과정이다.
    클라이언트, 서비스 서버, 카카오 인증 서버 사이에서 키를 주고 받으며 사용자 인증을 진행한다.
    과정은 크게 인가 코드 받기, 토큰 받기, 사용자 인증으로 진행된다.

OAuth 2.0 방식의 소셜 로그인 과정은 다음 포스팅에서 진행하도록 하겠다!

3. JWT

  • JWT란?
    JWT는 Json Web Token으로, 인증에 필요한 정보들을 토큰에 담아 암호화시켜 사용하는 토큰이다.
    서명된 토큰이라는 점에서 쿠키보다 더 보안적이라고 할 수 있다.

  • JWT의 구조

JWT는 Header, Payload, Signature의 구성요소가 마침표(.)로 구분된다.
Header에는 보통 토큰의 타입이나, 서명 생셩에 사용되는 알고리즘을 저장한다.
Payload에는 토큰에 담을 정보를 key-value 형태로 저장한다.
Signature에는 서명이 저장되는데 암호화되어 있기 때문에 서버에 있는 개인 키로만 복호화가 가능하다.

JWT 생성 및 인증의 과정은 링크를 클릭해서 확인 가능하다.

profile
백엔드 개발자로 향하는 계단을 오르고 있습니다! 😎

0개의 댓글