로그인 프로세스

cabbage·2023년 2월 4일
0

기타

목록 보기
3/26
post-custom-banner

회원가입 프로세스

유저가 로그인을 하려면 우선 회원가입을 해야 한다. 회원가입 프로세스를 간단하게 표현하면 다음과 같다.

  • 프론트엔드는 ID, 비밀번호 등의 회원 정보를 서버에 전달한다. (SSL 이용)
  • 서버는 프론트엔드에서 전달된 회원 정보를 DB에 저장한다.

DB 정보가 유출되면 회원 정보가 노출될 위험이 있기 때문에, 비밀번호는 단방향 암호화를 하여 DB 정보가 유출되더라도 비밀번호를 알아내지 못하도록 방지해야 한다.

로그인 프로세스 (세션)

  • 프론트엔드는 회원 정보를 서버에 전달한다. (SSL 이용)
  • 전달받은 회원 정보의 ID를 기준으로 회원 정보를 DB에서 조회한다.
  • 전달받은 회원 정보의 비밀번호를 단방향 암호화한 결과를 DB에 저장된 암호화된 비밀번호와 비교한다.
  • 두 암호화 결과 일치하면 서버는 클라이언트의 세션에 ID를 저장한다.
  • 세션 정보는 웹브라우저가 닫히면 사라진다.

이후 프론트엔드에서 서버에 request를 전달할 때마다 세션 정보를 함께 전달한다. 서버는 request마다 세션 내부에 있는 사용자 ID를 확인해서 DB에서 해당 회원 정보를 가져온다. 회원 정보가 DB에 존재하면 request를 정상 처리하지만 존재하지 않으면 거부한다.

로그인 프로세스 (쿠키)

  • 프론트엔드는 회원 정보를 서버에 전달한다. (SSL 이용)
  • 전달받은 회원 정보의 ID를 기준으로 회원 정보를 DB에서 조회한다.
  • 전달받은 회원 정보와 DB에서 조회한 회원 정보를 비교한다.
  • 비교 결과가 일치하면 랜덤 문자열(22자리)로 쿠키 토큰을 생성하여 DB에 저장한다. (단방향 암호화)
  • 쿠키에 두 정보를 저장한다.
    • 암호화된 사용자 ID
    • 쿠키 비밀번호 - 생성한 랜덤 문자열(22자리)

쿠키는 클라이언트 쪽에 저장되므로 안전하지 않다. 따라서 사용자 ID를 암호화하고 22자리의 랜덤 문자열로 구성된 쿠키 비밀번호를 함께 저장한다.

이후 프론트엔드에서 서버에 request를 전달할 때마다 쿠키 정보를 함께 전달한다. 서버는 request마다 쿠키에서 사용자 ID를 꺼내어 복호화하여 회원 정보를 DB에서 조회한다. 쿠키 비밀번호가 DB에 저장된 쿠키 토큰과 동일한지를 확인한다. 동일하다면 request를 정상 처리하지만 동일하지 않다면 거부한다.

쿠키 생존시간을 길게 설정하면 쿠키 정보가 클라이언트 쪽에 오래 남아 있는다. 브라우저를 닫고 다시 열더라도 자동 로그인이 된다.

참고

profile
캐비지 개발 블로그입니다. :)
post-custom-banner

0개의 댓글