social login

박성운·2022년 8월 24일
0

Refresh Token
로그인 요청을 하고 나서, 서버에서 토큰을 프론트에거 넘겨줄 때, 토큰을 하나더 만들어 넘겨준다. 하나 더 만든 토큰을 refresh token이라고 하고 기존에 발행 했던 토큰을 access token이라고 한다.

refresh token은 access toㅏ두 이 만료 되엇을 때, access token을 다시 발행 하기 위한 용도로 써야 하기 때문에 유효기간이 더 길어야 한다.

refresh token의 필요성
Access token를 통한 인증 방식의 문제는 해킹을 당했을 때 보안이 취약하다는 점이다. 유효기간이 짧은 토큰의 겨우 그만큼 사용자는 로그인을 자주 새롭게 받아야 하므로 불편하다. 그렇다고 유효기간을 늘리면 해킹에 취약해진다.
refresh 토큰을 access token 과 같이 jwt 이다.
access token의 유효기간은 보통 2시간이고 refresh token은 2주에서 2달이다.

access token과 refresh token을 활용한 Authorization process

  1. 사용자가 로그인을 하낟.

  2. 서버에서는 인가를 한다.
    인가는 아이디와 비밀버호가 맞는지 비교하는 일이다.
    인가를 할때 DB를 거치지 않고 Gaurd를 통해 인가 처리를 한다.
    인가 처리 시 문제가 있으면 브라우저로 에러를 반환하고, 문제가 없으면 DB와 연동하여 API처리 가 이루어진다.

  3. Access token 과 refresh토큰이 전달된다.
    access token payload를 통해 전달
    refresh toekn cookie를 통해 전달

  4. 만료된 accesstoken을 첨부하여 요처을 보낸다.

  5. accesstoken이 만료되면 refresh token으로 accestoekn을 재발급 받는 API 를 프론트에서 요처앟는 것이다.

  6. 토큰이 만료된거을 알고 restoreAccessToken를 쿠키와 함께 요청을 보낸다.
    refreshToken이 만료되었을 때만 사용자가 재로그인을 하면 된다.

  7. refreshToken을 확인하고(인가) 요청해 새로운 accesstoken을 발그해서 반환한다.

  8. 재발급된 토큰과 함께 실패한 요청에 대해 재요청을 보낸다.

social login flow

  1. 프론트엔드에서 만드러진 구글 로그인 버튼을 클릭하면 loginGoogle API가 실행된다.
  2. 인가를 받기 위해 AuthGaurd가 프론트엔드 페이지를 구글 로그인 페이지로 이동 시켜준다.
  3. 로그인를 진행한다.
    로그인 정보가 구르 서버로 넘어가서 인가를 진행한다.
    인가가 정상적으로 이루어지면 구글서버에서 구글 로그인 페이지로 응답을 준다.
    받은 응답을 가지고 이용하려는 서비스의 로그인 API르 다시 진행한다
  4. 해당 소셜에서 가져온 정보로 DB에 저장
  5. 서비스 이용

0개의 댓글