OAuth 2.0이란?

null·2026년 8월 11일

개발지식

목록 보기
5/10

백엔드 면접 질문 #4 - OAuth 2.0이란? 왜 사용하는가?

❓ 면접 질문

OAuth 2.0이 무엇이고, 어떤 상황에서 사용하나요? 기본적인 동작 방식도 설명해주세요.


OAuth를 이해하기 전에

OAuth를 이해하려면 먼저

인증(Authentication) 과 인가(Authorization) 의 차이를 알아야 한다.

구분설명
Authentication(인증)"너 누구야?"를 확인하는 과정
Authorization(인가)"너 무엇을 할 수 있어?"를 결정하는 과정

예를 들어

아이디와 비밀번호를 입력하여 로그인하는 것은

인증(Authentication) 이다.

아이디

↓

비밀번호

↓

로그인 성공

OAuth란?

OAuth(Open Authorization)는

비밀번호를 공유하지 않고 다른 서비스에게 권한을 위임하는 표준 프로토콜이다.

많은 사람들이

"OAuth = 소셜 로그인"

이라고 생각하지만

정확한 표현은 아니다.

OAuth의 목적은

로그인이 아니라

권한 위임(Authorization Delegation) 이다.

소셜 로그인은 OAuth를 활용한 대표적인 사례일 뿐이다.


OAuth가 필요한 이유

예를 들어 내가 쇼핑몰 서비스를 만들었다고 가정하자.

사용자가

구글 로그인

을 원한다.

가장 단순한 방법은

우리 서버

↓

구글 아이디

↓

구글 비밀번호 입력

이다.

하지만

이 방법은 매우 위험하다.

왜냐하면

우리 서버가

사용자의

구글 비밀번호를 알게 되기 때문이다.


OAuth의 핵심 아이디어

OAuth는

비밀번호는 절대 공유하지 말고 권한만 위임하자.

라는 개념이다.

즉

사용자

↓

구글 로그인 클릭

↓

구글 로그인 화면

↓

사용자가 직접 로그인

↓

구글이 Access Token 발급

↓

우리 서비스

우리 서버는

구글 비밀번호를 절대 알지 못한다.

오직

Access Token만 전달받는다.


쉽게 이해하는 비유

OAuth가 없다면

친구에게

우리 집 비밀번호

1234

를 알려주는 것과 같다.

친구는

  • 현관문
  • 금고
  • 서랍

모든 것을 열 수 있다.

매우 위험하다.


OAuth는

비밀번호 대신

출입카드를 발급하는 것이다.

출입카드

↓

현관 출입 가능

↓

금고는 접근 불가

↓

하루만 사용 가능

즉

비밀번호가 아니라

권한만 전달하는 것이다.


OAuth에서 사용하는 Access Token

OAuth에서는

사용자 인증이 완료되면

Authorization Server가

Access Token을 발급한다.

예를 들어

abc123xyz

와 같은 문자열이다.

우리 서버는

이 토큰을 이용하여

구글 API를 호출한다.

Authorization

Bearer abc123xyz

구글은

토큰을 확인한 뒤

사용자 정보를 반환한다.


OAuth 구성 요소

OAuth는 크게 네 가지 구성 요소로 이루어진다.

1. Resource Owner

사용자

예를 들어

나

이다.


2. Client

OAuth를 사용하는 서비스

예를 들어

우리 쇼핑몰

우리 서비스

이다.


3. Authorization Server

사용자를 인증하고

Access Token을 발급하는 서버이다.

대표적으로

  • Google
  • Kakao
  • Naver
  • Apple

로그인 서버가 여기에 해당한다.


4. Resource Server

실제 사용자 정보를 가지고 있는 서버이다.

예를 들어

Google의

userinfo API

가 여기에 해당한다.


OAuth 동작 과정

① 사용자가

구글 로그인

버튼을 클릭한다.

↓

② 우리 서비스는

사용자를

구글 로그인 페이지로 이동시킨다.

↓

③ 사용자가

구글에서 직접 로그인한다.

↓

④ 구글은

Access Token을 발급한다.

↓

⑤ 우리 서버는

Access Token을 이용하여

사용자 정보를 요청한다.

↓

⑥ 구글은

이름

이메일

프로필 사진 등을 반환한다.

↓

⑦ 우리 서비스는

회원가입 또는 로그인을 완료한다.

전체 흐름은 다음과 같다.

사용자

↓

구글 로그인

↓

구글 인증

↓

Access Token 발급

↓

우리 서버

↓

사용자 정보 조회

↓

로그인 완료

OAuth는 언제 사용할까?

대표적으로

  • 구글 로그인
  • 카카오 로그인
  • 네이버 로그인
  • 애플 로그인
  • Github 로그인

모두 OAuth 2.0을 사용한다.

또는

Notion이

Google Drive에 접근하거나

Slack이 Google Calendar를 조회하는 경우처럼

다른 서비스의 데이터를 사용할 때도

OAuth를 사용한다.


OAuth와 JWT의 차이

면접에서 자주 나오는 질문이다.

많은 사람들이

OAuth = JWT

라고 생각하지만

둘은 완전히 다른 개념이다.

OAuthJWT
권한을 위임하는 프로토콜토큰의 형식
인증 절차를 정의데이터를 담는 방법
Google Login 등에서 사용로그인 후 자체 인증 토큰으로 많이 사용

즉

OAuth가

JWT를 사용할 수도 있고

사용하지 않을 수도 있다.


Spring Security에서는?

Spring에서는

http
    .oauth2Login();

만 설정하면

Spring Security가

  • OAuth 인증
  • Access Token 발급
  • 사용자 정보 조회

과정을 대부분 자동으로 처리한다.

개발자는

OAuth2UserService 등을 구현하여

회원가입 및 로그인 로직만 작성하면 된다.


핵심 정리

항목설명
OAuth비밀번호를 공유하지 않고 권한을 위임하는 프로토콜
Authentication사용자 인증(로그인)
Authorization권한 부여
Access Token권한을 증명하는 토큰
대표 사례구글 로그인, 카카오 로그인, Github 로그인

면접 답변

OAuth 2.0은 사용자의 비밀번호를 직접 공유하지 않고, 다른 서비스에 권한을 위임하기 위한 표준 프로토콜입니다. 대표적으로 구글, 카카오, 네이버 로그인 등에 사용됩니다. 사용자가 OAuth 제공자의 로그인 화면에서 인증을 완료하면 Authorization Server가 Access Token을 발급하고, 클라이언트는 해당 토큰으로 Resource Server에 사용자 정보를 요청합니다. 이를 통해 비밀번호를 알지 못한 채 필요한 권한만 안전하게 사용할 수 있습니다.

OAuth1과 OAuth2 차이

OAuth 1.0OAuth 2.0
Signature 기반 인증Access Token 기반 인증
구현이 복잡구현이 단순
현재 거의 사용하지 않음현재 표준
매 요청마다 서명 생성Bearer Token 사용

OAuth 1.0은 Signature 기반이라 구현이 복잡했다.
OAuth 2.0은 Access Token(Bearer Token) 기반으로 단순화되었다.
현재 실무에서는 거의 모두 OAuth 2.0을 사용한다.
실제 소셜 로그인은 OAuth 2.0만 사용하는 것이 아니라, 사용자 인증을 위해 OpenID Connect(OIDC)를 함께 사용하는 경우가 많다.

0개의 댓글