인증의 방식

김나영·2023년 6월 27일
0

Spring

목록 보기
16/38

1. 쿠키 - 세션 방식의 인증

  • 서버가 ' 특정 유저가 로그인 되었다 ' 는 상태를 저장하는 방식

    • 인증과 관련된 아주 약간의 정보만 서버가 가지고 있게 되고 유저의 이전 상태의 전부는 아니더라도 인증과 관련된 최소한의 정보는 저장해서 로그인을 유지 시킴

  • 사용자가 로그인 요청을 보냄

  • 서버는 DB의 유저 테이블에서 아이디 비밀번호를 대조

  • 실제 유저테이블의 정보와 일치한다면 인증을 통과하게 된 것으로 보고 세션 저장소에 해당 유저가 로그인 되었다는 정보를 넣음

  • 세션 저장소에는 유저의 정보와는 관련 없는 난수인 sesstion-id를 발급

  • 서버는 로그인 요청의 응답으로 session-id를 내어줌

  • 클라이언트는 session-id를 쿠키라는 저장소에 보관하고 앞으로의 요청마다 세션 아이디를 같이 보냄(주로 HTTP header에 담아서 보냄)

  • 클라이언트의 요청에서 쿠키를 발견했다면 서버는 세션 저장소에서 쿠키 검증

  • 만약 유저 정보를 받아왔다면 이 사용자는 로그인이 되어 있는 사용자

  • 이후 로그인 된 유저에 따른 응답을 내어줌

2. JWT 기반 인증

  • JWT(JSON Web Token)

    • 인증에 필요한 정보들을 암호화시킨 토큰

    • 쿠키/세션 방식과 유사하게 JWT 토근(Access Token)을 HTTP 헤더에 실어 서버가 클라이언트를 식별

  • 사용자가 로그인 요청을 보냄

  • 서버는 DB의 유저 테이블에서 아이디 비밀번호를 대조

  • 실제 유저 테이블의 정보와 일치한다면 인증을 통과한 것으로 보고 유저의 정보를 JWT로 암호화해서 내보냄

  • 서버는 로그인 요청의 응답으로 jwt 토큰을 내어줌

  • 클라이언트는 그 토큰을 저장소에 보관하고 앞으로의 요청마다 토큰을 같이 보냄

  • 클라이언트의 요청에서 토큰을 발견했다면 서버는 토큰을 검증

  • 이후 로그인 된 유저에 따른 응답을 내어줌

0개의 댓글