OAuth2.0를 이용해 소셜 로그인을 구현하기

Lee Chanjoo·2022년 1월 17일
1

개요

OAuth2.0 이란?

open authorization의 줄임말로 인증을 위한 개방형 표준 프로토콜을 의미한다. 카카오, 구글, 페이스북 로그인 또는 회원가입으로 서비스를 간편하게 서비스를 이용할 수 있는데, 이러한 소셜 로그인을 어떻게 구현하는지 알아보자.

OAuth 소셜 로그인 flow

  1. resource owner인 유저가 로그인한 이후 Redirect URI로 받은 인가 코드를 전달받음
  2. 인가 코드, client ID, client Secret을 이용해 authorization server(ex google, kakao)로 부터 access token을 발급 받음
  3. access token(+ refresh token)을 활용해 resource server로부터 유저 정보를 받아옴
  4. 유저 정보를 백엔드 서버에 저장 혹은 검증하고 jwt토큰을 발행함

개념 짚기

  • Client ID : 처음 어플리케이션을 구글, 페이스북 등에 등록하면 클라이언트 아이디를 발급해준다.
  • Client Secret(PW) : 패스워드와 비슷한 클라이언트 시크릿은 엑세스 토큰을 발급할 때 사용된다. 절대 노출되어선 안되므로 환경변수에 저장해 안전하게 보관한다.
  • Redirect URI : URI를 통해 실제 요청한 어플리케이션 서버를 식별하고 리다이렉트 URI를 이용해 인증 코드를 헤더에 전달한다.

프론트엔드와 백엔드의 역할

프로젝트에서 실제 소셜 로그인을 구현하면서 어느정도까지 프론트엔드 역할인지에 대해서 혼선이 있었다. 실제 인가 코드는 10분정도의 만료시간을 가지고 단 한 번만 엑세스 토큰을 발급받을 수 있기 때문에(똑같은 인가 코드로 엑세스 토큰 발급이 불가하다) 사실상 탈취되어도 보안상의 치명적인 단점이 아니다. 프론트와 주고 받아도 크게 무리가 없다. 하지만 엑세스 토큰은 만료되기 전까지 유저 정보를 받아올 수 있는 중요한 토큰이기 때문에 탈취되지 않도록 백엔드에서만 존재하도록 해야한다.

profile
재밌는 개발이 하고싶은 사람

0개의 댓글