OAuth 소셜 로그인

Jang Seowoo·2022년 2월 5일

OAuth

개념

OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다. 이 매커니즘은 여러 기업들에 의해 사용되는데, 이를테면 아마존, 구글, 페이스북, 마이크로소프트, 트위터가 있으며 사용자들이 타사 애플리케이션이나 웹사이트의 계정에 관한 정보를 공유할 수 있게 허용한다.

OAuth가 사용되기 전에는 인증방식의 표준이 없었기 때문에 기존의 기본인증인 아이디와 비밀번호를 사용하였는데, 이는 보안상 취약한 구조이다.

기본 인증이 아닐 경우는 각 애플리케이션들이 각자의 개발한 회사의 방법대로 사용자를 확인하였다. 예를 들면 구글의 AuthSub, AOL의 OpenAuth, 야후의 BBAuth, 아마존의 웹서비스 API 등이 있다.

OAuth는 이렇게 제각각인 인증방식을 표준화한 인증방식이다. OAuth를 이용하면 이 인증을 공유하는 애플리케이션끼리는 별도의 인증이 필요없다. 따라서 여러 애플리케이션을 통합하여 사용하는 것이 가능하게 된다.
출처: 위키백과 OAuth 요약, 개요

그래서 인증방식이 어떻게 되는데?

OAuth인증은 소비자와 서비스 제공자 사이에서 일어나는데 이 인증 과정은 다음과 같다.

  1. 소비자가 서비스제공자에게 요청토큰을 요청한다.
  2. 서비스제공자가 소비자에게 요청토큰을 발급해준다.
  3. 소비자가 사용자를 서비스제공자로 이동시킨다. 여기서 사용자 인증이 수행된다.
  4. 서비스제공자가 사용자를 소비자로 이동시킨다.
  5. 소비자가 접근토큰을 요청한다.
  6. 서비스제공자가 접근토큰을 발급한다.
  7. 발급된 접근토큰을 이용하여 소비자에서 사용자 정보에 접근한다.

출처: 위키백과 OAuth 인증방식


여기서

  • 소비자: 웹/앱 서비스
  • 서비스 제공자: 구글, 카카오 등 소셜 로그인 기능을 제공하는 회사
  • 사용자: 웹/앱 서비스를 사용하는 유저들

    을 의미한다.

요청 토큰(request token)이란 어플리케이션에서 사용자의 계정을 사용하기 위해 요청하는 특수한 키이다.

접근 토큰(access token)이란 어플리케이션에 요청된 리소스에 접근하기 위한 권한이 부여되었는지를 검증하는 키이다.

카카오 로그인에 적용해보자

따라서 다시 정리하면, 인증방식은 다음과 같다.
우리가 일반적으로 사용하는 카카오 소셜로그인을 생각하면서 인증방식을 살펴보자.

  1. 웹 서비스가 카카오에게 request token을 요청한다.
  2. 카카오가 웹 서비스에게 request token을 발급해준다.
  3. 웹 서비스가 사용자를 카카오로 이동시킨다. 여기서 사용자 인증이 수행된다.
    카카오계정으로 로그인
  4. 카카오가 사용자를 웹 서비스로 이동시킨다.
  5. 웹 서비스가 access token을 요청한다.
  6. 카카오가 access token을 발급한다.
  7. 발급된 access token을 이용하여 웹 서비스에서 사용자 정보(소셜로그인에서 허용한 정보들)에 접근한다.

참고: 카카오 Developers 로그인 문서

profile
https://devseowoo.notion.site/Seowoo-Portfolio-b21365c3477345818913e8d8fe2e3b90

0개의 댓글