1차 Github OAuth 로그인 과정

  1. 클라이언트에서 Get GitHub Login URL api로 응답 받은 login_url로 사용자를 이동시킨다.

  2. 사용자가 Github에 로그인하고, 인증을 한다.

  3. 백엔드 쪽의 /callback으로 인증 코드가 넘어옴.

  4. 백엔드에서 인증 코드를 사용해 access_token을 발급받아 회원 DB에 저장.

  5. 백엔드에서 브라우저의 쿠키로 token과 리다이렉트 경로를 보냄.

    (여기서 문제 : 클라이언트에서는 로그인 과정이 끝났다는 걸 어떻게 감지하는가?)

  6. Github OAuth 인증이 끝나면 클라이언트에서 백엔드로 '(예시) GET /user/current' 를 보내 현재 로그인한 사용자의 정보를 받아온다.

  7. 이후 이슈 발급 등을 위해 백엔드로 POST 요청을 보낼 때 Header 의 Authorization에 쿠키에 저장된 토큰(-> 5번)을 동봉하여 보내면 백엔드에서는 옳바른 유저인지 검증하고 로직을 처리

🤔 궁금한 점 & 문제

백엔드에서 생성한 쿠키(5번) 를 브라우저에 직접 보낸다고 하는 부분

  1. 여기서 쿠키와 함께 보내는 리다이렉트 경로는 무슨 경로인가?
  2. 백엔드에서 브라우저에 직접 쿠키를 저장한다면 프론트엔드 쪽에서는 로그인 과정이 끝났고 쿠키가 저장됐다는걸 어떻게 알지?
  3. 프론트엔드에서 쿠키를 직접 저장 할 수 있는데 그렇게 하는게 낫지 않을까?

☕️ 논의 하고 싶은 내용

Untitled

스크린샷 2022-06-22 오전 1.21.13.png

백엔드에서 모든 인증 과정을 처리하지 않고 프론트엔드와 역할을 분담하여 구현하는 것이 어떤가?

위와 같이 구현하면 프론트엔드는 fetch 요청에 인증 code를 함께 동봉하여 보내고 그에 대한 응답으로 토큰을 받아 로그인 과정이 전부 정상적으로 끝났다는 걸 확인 할 수 있다.