코딩/기초

[Web Security] OAuth란? 개방형 인증/인가 프레임워크 이해하기

아하형 2025. 9. 1. 18:10

1. OAuth란 무엇인가?

OAuth(Open Authorization)는 사용자가 비밀번호를 직접 제공하지 않고도, 웹사이트나 애플리케이션이 다른 서비스의 사용자 정보에 안전하게 접근할 수 있도록 허용하는 개방형 인증/인가 프레임워크이다. 간단히 말해 OAuth는 제3자 애플리케이션이 사용자를 대신해 보호된 리소스에 접근할 수 있는 방법을 제공한다.

2. OAuth의 핵심 역할

OAuth 2.0은 네 가지 주요 역할을 기반으로 동작한다.

역할 설명 예시
Resource Owner (리소스 소유자) 보호된 리소스에 대한 접근 권한을 부여할 수 있는 주체 소셜 미디어 사용자
Resource Server (리소스 서버) 보호된 리소스를 호스팅하고, 액세스 토큰을 사용한 요청을 처리 Google API, Facebook API
Client (클라이언트) 리소스 소유자를 대신하여 보호된 리소스에 접근 요청 웹 앱, 모바일 앱
Authorization Server (인가 서버) 리소스 소유자를 인증하고 권한을 확인한 후 액세스 토큰 발급 Google OAuth 서버

3. OAuth 플로우 과정

기본적인 OAuth 2.0 인가 과정은 다음과 같다.

  1. 클라이언트가 리소스 소유자에게 인가 요청
  2. 리소스 소유자가 인가 그랜트 제공
  3. 클라이언트가 인가 서버에 액세스 토큰 요청
  4. 인가 서버가 액세스 토큰 발급
  5. 클라이언트가 액세스 토큰으로 리소스 서버에 접근
  6. 리소스 서버가 보호된 리소스 반환

4. OAuth의 장점

  1. 보안성 향상: 비밀번호 대신 액세스 토큰을 사용하여 안전하게 인증한다.
  2. 제한된 권한 부여: 사용자는 특정 기능이나 데이터만 접근을 허용할 수 있다.
  3. 사용자 경험 개선: 기존 계정(Google, Facebook 등)으로 로그인할 수 있어 편리하다.
  4. 토큰 기반 관리: 액세스 토큰은 만료 시간이 있으며, 언제든지 철회 가능하다.
  5. 확장성과 표준성: 다양한 언어와 플랫폼에서 지원된다.

5. OAuth와 인증(Authentication)의 차이

OAuth는 본질적으로 인가(Authorization) 프로토콜이지 인증(Authentication) 프로토콜이 아니다.

  • 인증(Authentication): 당신이 누구인지 확인
  • 인가(Authorization): 당신이 무엇을 할 수 있는지 확인

인증 기능까지 필요하다면 OAuth 위에 구축된 OpenID Connect를 사용한다.

6. 실제 사용 사례

  • 소셜 로그인: "Google 계정으로 로그인"
  • API 접근: 제3자 앱이 Google 캘린더에 이벤트 추가
  • 데이터 공유: 뉴스 웹사이트에서 Twitter로 기사 공유
  • 모바일 앱 인증: Salesforce 모바일 앱이 사용자 데이터 접근

7. 결론

OAuth는 현대 웹 서비스에서 보안과 편의성을 동시에 충족하는 핵심 기술이다. 비밀번호 공유 없이 제3자 애플리케이션이 보호된 리소스에 접근할 수 있게 하여, 사용자 개인정보를 안전하게 보호하면서도 다양한 서비스 간 연동을 가능하게 한다. 인증까지 필요하다면 OpenID Connect를 함께 사용하는 것이 일반적이다.

📖 OAuth 2.0 공식 문서 (RFC 6749)

📖 Auth0 OAuth 가이드