퍼퓨미즘 로그인 인증 기능 정리

알파·2022년 11월 6일
0
post-thumbnail
post-custom-banner

퍼퓨미즘에서는 로그인 인증 기능을 위해 JWT 액세스토큰과 리프레시 토큰을 사용했다.

로직

  1. [프론트엔드] ID와 비밀번호를 준다.

  2. [백엔드] ID와 비밀번호를 검증하고 AccessToken과 RefreshToken, AccessToken의 만료시간을 반환해준다. 이 때 생성한 RefreshToken은 DB에 {ID,RefreshToken}으로 저장한다.

  3. [프론트엔드] 반환받은 AccessToken을 매 api 호출마다 헤더에 붙여서 전송한다.

  4. [백엔드] api호출시 헤더의 AccessToken을 확인하고 유효한지, 만료기간이 지났는지를 체크 후 api를 동작시킨다.

  5. [프론트엔드] AccessToken의 만료 기간이 지나거나, 30초 미만으로 남았다면, 백엔드에 RefreshToken을 붙여 Reissue 요청을 보낸다.

  6. [백엔드] Reissue요청이 들어올 경우, RefreshToken이 DB에 있는 것인지 확인한 후, 맞다면 AccessToken과 새로운 AccessToken 만료 시간을 반환한다.

  7. [프론트엔드] Reissue결과 반환된 AccessToken과 만료기간을 저장하여 다음 api호출에 사용한다.

Reissue 과정

  1. Refresh Token이 유효한지 검증합니다.
  2. Access Token에서 Authentication 객체를 가지고 와서 저장된 name(email)을 가지고 옵니다.
  3. email을 가지고 Redis에 저장된 Refresh Token을 가지고 와서 입력받은 Refresh Token 값과 비교합니다.
  4. Authentication 객체를 가지고 새로운 토큰을 생성합니다.
  5. Redis에 새로 생성된 Refresh Token을 저장합니다.
  6. 클라이언트에게 새로 발급된 토큰 정보를 내려줍니다.

JWT

Json Web Token의 약자로 인증에 필요한 정보를 담은 JSON 토큰이다.

쿠키

쿠키는 Key-value 형식의 문자열 덩어리로 서버를 통해 브라우저에 저장되는 기록 정보 파일이다

XSS 공격

XSS(Cross Site Scripting)으로 공격자가 의도하는 js코드를 삽입하여 피해자의 웹 코드에서 실행시키는 것

CSRF 공격

정상적인 요청을 가로채 변조된 요청을 보내 악의적인 동작을 수행하게 하는 공격

출처 : https://bcp0109.tistory.com/301
https://wildeveloperetrain.tistory.com/59

profile
I am what I repeatedly do
post-custom-banner

0개의 댓글