ourofficial 님의 블로그

"OAuth란? 웹 서비스에서 인증과 권한 부여의 핵심 이해하기" 본문

IT테크(기술,혁신,동향,제품)

"OAuth란? 웹 서비스에서 인증과 권한 부여의 핵심 이해하기"

our_official 2024. 11. 29. 13:10
300x250
반응형
SMALL

이번시간에는 OAuth라는 프로토콜 방식에 대해 알아보고자 하는데요. OAuth는 권한 부여를 관리하는 강력한 프로토콜로, 사용자 인증 정보를 노출하지 않고도 다양한 웹 서비스와 애플리케이션에서 사용자 자원에 대한 접근 권한을 위임할 수 있게 도와줍니다. OAuth의 주요 장점은 보안편리함이며, 다양한 서비스에서 사용자 경험을 향상시키고 있습니다. 또한, OpenID Connect나 SAML과 같은 다른 인증 및 권한 부여 시스템과 함께 사용되기도 하며, 이를 통해 **단일 로그인(SSO)**이나 OAuth 기반의 인증을 구현할 수 있습니다.

 


 

oauth2.0개념

 

1. OAuth란 무엇인가?

OAuth(Open Authorization)는 웹 애플리케이션이나 모바일 애플리케이션이 사용자의 자원에 접근할 수 있도록 권한을 위임하는 프로토콜입니다. OAuth는 사용자가 다른 사이트나 앱에 로그인하지 않고도 특정 자원(예: 구글 이메일, 페이스북 친구 목록 등)에 대한 접근을 제3자 애플리케이션에 허용할 수 있게 합니다.

OAuth의 핵심은 사용자가 자신의 비밀번호를 공유하지 않고도 제3자 애플리케이션에 자원 접근 권한만을 부여하는 점입니다. 즉, OAuth는 **인증(Authentication)**이 아니라 권한 부여(Authorization) 프로토콜입니다.

 

2. OAuth의 동작 방식

OAuth는 사용자 인증권한 부여를 별개로 처리하는 방식입니다. OAuth의 주요 흐름은 다음과 같습니다:

 

1) 사용자 인증

  • 사용자는 OAuth를 지원하는 제3자 애플리케이션에 로그인하려고 시도합니다. 예를 들어, 사용자가 구글 로그인을 통해 다른 웹사이트에 로그인하려고 할 때, 구글이 제공하는 인증 화면이 나타납니다.

2) 애플리케이션에 권한 부여

  • 사용자가 인증을 마친 후, 제3자 애플리케이션은 사용자에게 구글 계정의 정보에 접근할 수 있는 권한을 요청합니다.
  • 예를 들어, 구글 드라이브에 접근하거나, 이메일을 읽을 수 있도록 허용할 수 있습니다.

3) 액세스 토큰 발급

  • 사용자가 권한을 승인하면, 구글 서버액세스 토큰을 발급합니다.
  • 이 액세스 토큰은 애플리케이션이 사용자 대신 구글 API에 접근할 수 있는 임시 권한을 부여하는 키 역할을 합니다.

4) 자원에 접근

  • 애플리케이션은 발급받은 액세스 토큰을 사용하여 구글 서버에 자원 요청을 보냅니다. 예를 들어, 구글 드라이브에서 사용자의 파일을 읽거나, 구글 메일에서 이메일을 가져올 수 있습니다.
  • 액세스 토큰은 일정 시간 후 만료되며, 만료되면 다시 권한을 요청하거나 리프레시 토큰을 사용해 새로운 액세스 토큰을 받을 수 있습니다.

5) 리프레시 토큰

  • 리프레시 토큰은 액세스 토큰을 갱신할 수 있도록 도와주는 장기 유효한 토큰입니다. 액세스 토큰이 만료되면 리프레시 토큰을 사용해 새로운 액세스 토큰을 발급받을 수 있습니다.

 

3. OAuth의 장/단점 

    장점

  • 보안성 강화: 사용자는 자신의 비밀번호를 제3자 애플리케이션과 공유하지 않고도, 애플리케이션에 필요한 권한만 부여할 수 있습니다.
  • 사용자 편의성: 여러 앱에서 **단일 로그인(SSO, Single Sign-On)**을 통해 여러 서비스에 접근할 수 있습니다. 예를 들어, 구글 로그인, 페이스북 로그인 등의 OAuth 기반 서비스는 매우 간편한 사용자 경험을 제공합니다.
  • 권한 세분화: OAuth는 사용자가 제공할 권한을 세밀하게 조정할 수 있도록 돕습니다. 예를 들어, 구글에서는 이메일 읽기만 허용하거나, 사진 보기만 허용하는 등 사용자가 원하는 자원만 제공할 수 있습니다.

 

   단점

  • 구현의 복잡성: OAuth는 인증권한 부여를 나누어 처리하는 복잡한 구조를 가집니다. 따라서 제대로 구현하려면 다소 까다로울 수 있습니다.
  • 액세스 토큰 탈취 위험: 액세스 토큰이 탈취되면, 악의적인 사용자가 사용자의 자원에 접근할 수 있기 때문에 보안 관리가 중요합니다.
  • 토큰 만료 관리: 액세스 토큰이 만료되면 리프레시 토큰을 통해 갱신해야 하며, 이 과정에서 관리가 필요합니다.
장점 단점
보안성 강화: 비밀번호를 제3자와 공유하지 않고도 자원 접근을 허용할 수 있어 보안이 강화됩니다. 구현의 복잡성: OAuth는 인증과 권한 부여를 분리하여 처리하므로 구현이 복잡할 수 있습니다.
사용자 편의성: 여러 서비스에서 하나의 로그인 계정으로 인증할 수 있어 사용자 경험이 향상됩니다. 액세스 토큰 탈취 위험: 액세스 토큰이 탈취되면 악의적인 사용자가 자원에 접근할 수 있는 위험이 있습니다.
권한 세분화: 사용자가 제공할 권한을 세밀하게 조정할 수 있어 더 정밀한 자원 접근 제어가 가능합니다. 토큰 만료 관리: 액세스 토큰의 만료 기간을 관리해야 하며, 만료 후 리프레시 토큰을 통해 갱신해야 합니다.
Third-party API 통합 용이: 다양한 외부 서비스와 쉽게 연동할 수 있어 API 통합이 용이합니다. 추가적인 요청/응답: 인증 과정에서 여러 번의 요청과 응답이 필요하므로, 시스템 성능에 부담을 줄 수 있습니다.
권한 위임: 사용자가 서비스 간에 자원을 공유할 때, 권한을 위임하는 방식으로 접근이 가능합니다. 취약한 구현의 리스크: OAuth 프로토콜을 잘못 구현하면 보안 취약점이 발생할 수 있습니다.
OAuth 2.0 표준화: 다양한 플랫폼과 서비스에서 표준화된 방식으로 OAuth 2.0을 지원하여 호환성이 높습니다. 사용자 신뢰 필요: 사용자가 OAuth를 통해 자신의 데이터를 외부 서비스와 공유하는 것에 대해 신뢰가 필요합니다.

 

 

5. OAuth 1.0 & 2.0

 

OAuth 2.0은 보안성, 확장성, 유연성 측면에서 OAuth 1.0을 개선한 프로토콜로, 현재 많은 웹 및 모바일 애플리케이션에서 널리 사용되고 있는데요. OAuthOAuth 2.0은 인증 및 권한 부여 프로토콜로 비슷한 목적을 가지고 있지만, 몇 가지 중요한 차이점이 있습니다.

  • OAuth 1.0은 보안성이 강하나 복잡하고 구현하기 어렵습니다. 서명을 이용해 인증과 권한 부여를 처리하는데, 요청마다 복잡한 서명 계산을 요구합니다.
  • OAuth 2.0보다 단순하고 유연한 프로토콜로, 다양한 인증 및 권한 부여 흐름을 지원하며, 사용하기 쉽고 여러 환경에 적합하도록 설계되었습니다. 특히, 리프레시 토큰과 같은 기능을 지원하여 토큰 갱신을 보다 간편하게 처리할 수 있습니다.

 

6. OAuth의 활용

OAuth는 다양한 분야에서 인증과 권한 부여를 처리하는 핵심적인 프로토콜로 사용됩니다. 소셜 로그인, 타사 API 연동, 결제 시스템, 기업용 SSO, 모바일 애플리케이션, IoT 장치 연동 등에서 OAuth는 보안성과 사용자 편의성을 강화하는 중요한 역할을 합니다. 이러한 활용 사례를 통해 OAuth의 중요성과 다양한 산업에서의 적용 가능성을 알 수 있습니다.

활용분야 설명 대표사례 활용도
소셜 로그인 사용자가 다른 서비스의 계정을 통해 로그인할 수 있게 함 구글 로그인, 페이스북 로그인, 트위터 로그인 매우 널리 사용됨, 대부분의 웹사이트와 앱에서 사용
API 인증 외부 서비스의 API를 호출할 때 사용자의 인증을 처리 구글 지도 API, 트위터 API, 페이스북 API API 서비스에서 인증 및 권한 부여에 널리 사용
모바일
애플리케이션
모바일 앱에서 외부 서비스와의 인증 및 데이터 접근을 처리 구글 드라이브, 페이스북, 트위터 등 외부 데이터와 연동하는 앱 모바일 앱에서 외부 서비스와 연동할 때 자주 사용
Single Sign-On (SSO) 여러 서비스에서 동일한 로그인 정보를 사용하여 접근을 허용 기업 내 시스템 로그인, 구글 Workspace, Microsoft 365, Slack 기업 환경에서 SSO 구현에 널리 사용, 보안이 중요한 서비스에서 활용
클라우드
서비스
클라우드 저장소나 클라우드 기반의 서비스에 대한 인증 및 권한 부여 AWS, Google Cloud, Microsoft Azure, Dropbox 클라우드 플랫폼에서 자주 사용, 서비스와의 통합을 위한 필수 요소
금융 서비스 결제 시스템, 은행 계좌 정보 접근을 위해 사용자의 인증을 처리 PayPal 결제, Stripe, 은행 앱 연동 결제 시스템, 금융 서비스에서 인증을 처리할 때 사용
IoT
(사물인터넷)
IoT 장치가 서버와 안전하게 통신하기 위해 인증 및 권한 부여를 처리 스마트홈 기기, 헬스케어 장비(구글 헬스, Fitbit 등) IoT 환경에서 기기 간 통신 및 데이터 보안에 활용
기업 내부
시스템
기업의 내부 시스템에서 직원의 인증을 처리하며, 여러 애플리케이션에 대한 접근을 제어 Active Directory, 구글 Workspace, Microsoft 365 기업 환경에서 사용자의 인증 및 권한 부여를 위해 사용
Third-party 서비스 통합 타사의 서비스를 애플리케이션에 통합하여, 다양한 서비스 간의 데이터 연동을 가능하게 함 Zapier, IFTTT와 같은 자동화 서비스, CRM 시스템 연동 자동화 서비스나 외부 서비스 통합에서 매우 중요한 역할
웹 애플리
케이션
사용자가 웹 서비스에서 외부 서비스와 연동할 때 인증을 처리 웹메일 연동, 외부 소셜 미디어 공유, 이메일 서비스 연동 웹 애플리케이션에서 자주 사용, 다양한 외부 서비스와의 연동을 위해 필요

 

7. OAuth와 비슷한 개념들

아래 표는 OAuth와 비슷한 개념들을 정리한 표인데요. 각 인증/권한 부여 프로토콜의 개념, 용도, 활용 분야, 예시, 활용도를 비교해볼 수 있습니다.

개념 용도 활용분야 예시 활용도
OAuth 사용자 인증 및 권한 부여 웹 서비스, 모바일 앱 구글 로그인, 페이스북 로그인 매우 널리 사용됨, 웹 서비스와 모바일 앱에서 주요 인증 방식으로 활용
OpenID Connect OAuth 2.0 기반의 인증 프로토콜 웹 및 모바일 애플리케이션 구글 로그인, 애플 로그인 OAuth와 함께 사용되며, 사용자 인증에 특화된 서비스에서 많이 사용
SAML (Security Assertion Markup Language) SSO (Single Sign-On) 인증 프로토콜 기업 환경, 교육 기관, 정부 기업 내부 시스템 로그인, Google Workspace, Microsoft 365 기업 환경에서 많이 사용, 특히 대규모 조직에서 SSO 구현에 활용
LDAP (Lightweight Directory Access Protocol) 디렉토리 서비스와 인증 프로토콜 기업 및 기관 네트워크, 이메일 서비스 Active Directory, Email 시스템 인증 주로 기업 내 네트워크 환경에서 사용, 사용자 인증 및 정보 검색에 활용
JWT (JSON Web Token) 인증 및 권한 부여를 위한 토큰 기반 프로토콜 웹 애플리케이션, API 서버 API 서비스, 마이크로서비스 아키텍처 API 인증 및 분산 시스템에서 많이 사용, 특히 서버 간 통신에 효과적
Basic Authentication HTTP 헤더를 통한 사용자 이름과 비밀번호 인증 간단한 웹 서비스, API 웹 API, 개발 테스트 보안이 약해 현대적 시스템에서는 잘 사용되지 않지만, 단순한 인증 시스템에서 사용
Digest Authentication HTTP 요청에서 암호화된 해시값을 사용한 인증 웹 서비스, API, 이메일 서비스 일부 API 서비스, 웹 서버 인증 보안 강화를 위해 사용되지만, OAuth와 같은 대체 기술에 비해 상대적으로 덜 사용
Kerberos 네트워크에서의 사용자 인증 및 서비스 접근 제어 기업 네트워크, IT 인프라 Windows 도메인 인증, 내부 시스템 인증 주로 기업 내부 시스템에서 사용, 특히 윈도우 환경에서 널리 사용
Client Certificates SSL/TLS 기반의 클라이언트 인증 보안이 중요한 시스템, API 금융 서비스, 의료 서비스 고보안 환경에서 주로 사용, 중요한 시스템에서 인증 목적으로 사용
FIDO2 (WebAuthn) 생체 인식 및 보안 키 기반 인증 보안 강화가 필요한 웹 및 모바일 애플리케이션 Google, Microsoft, Apple 로그인 보안이 중요한 서비스에서 급격히 늘어나고 있으며, 생체 인증 지원 서비스에 사용

 


 
OAuth는 다양한 서비스와 시스템에서 안전하고 효율적인 인증 및 권한 부여를 가능하게 하는 중요한 기술입니다. 소셜 로그인, API 인증, 클라우드 서비스, IoT 기기 통합 등 여러 분야에서 활용되며, 사용자에게 편리함을 제공하는 동시에 보안성을 강화합니다. 특히 OAuth는 다양한 플랫폼과의 연동을 원활하게 만들어 주며, 현대 웹 및 모바일 애플리케이션에서 필수적인 요소로 자리잡고 있습니다. 이처럼 OAuth는 디지털 서비스 간의 상호 운용성을 높이고, 사용자와 개발자 모두에게 유리한 환경을 제공합니다.

 

300x250
반응형
LIST