본문 바로가기
IT

[보안] OAuth란? (개념, 특징, 장단점, 사용 사례)

by 유나니나노 2024. 4. 8.
반응형

 

OAuth는 오픈 스탠다드 인증 프로토콜입니다. 사용자가 중요한 자원(ex: 비밀번호)을 공유하지 않고도, 한 서비스(서비스 제공자)가 다른 서비스(소비자 서비스)에게 사용자 대신 특정 자원에 접근할 수 있는 권한을 부여할 수 있게 해 줍니다. 주로 API를 통한 서비스 간의 안전한 인증과 권한 부여에 사용됩니다.

 

 

개념

  • 리소스 오너(Resource Owner): 사용자를 의미합니다. 사용자는 데이터에 접근할 수 있는 권한을 부여할 수 있습니다.
  • 클라이언트(Client): 사용자 대신 특정 자원에 접근하려는 애플리케이션을 의미합니다.
  • 리소스 서버(Resource Server): 사용자 데이터를 보유하고 있는 서버입니다. 클라이언트가 접근하려고 하는 자원을 관리합니다.
  • 인증 서버(Authorization Server): 클라이언트에게 접근 권한을 발급해 주는 서버입니다. 리소스 서버와 같을 수도 있고, 별도의 서비스일 수 있습니다.

 

특징

  • 보안성: 사용자는 자신의 로그인 정보를 제3자에게 직접 제공하지 않아도 됩니다. 대신, 토큰 기반 시스템을 사용하여 제3자 애플리케이션에게 제한된 접근만을 허용합니다.
  • 유연성과 확장성: 다양한 유형의 애플리케이션(웹, 모바일, IoT 디바이스 등)에서 사용될 수 있으며, 다양한 인증 수준과 권한을 제공할 수 있습니다.
  • 표준화: OAuth는 인터넷 엔지니어링 태스크 포스(IETF)에 의해 표준화되었습니다. 이로 인해 다양한 서비스와 애플리케이션 간의 호환성이 보장됩니다.

작동 프로세스

 

  1. 권한 요청(Authorization Request): 클라이언트 애플리케이션은 사용자를 인증 서버의 로그인 페이지로 리디렉션 합니다. 이 페이지에서 사용자는 로그인을 하고, 클라이언트가 자신의 데이터에 접근할 수 있는 권한을 부여합니다.
  2. 권한 부여(Authorization Grant): 사용자가 권한을 부여하면, 인증 서버는 클라이언트에게 권한 부여 코드(Authorization Code)를 발급합니다. 이 코드는 클라이언트가 엑세스 토큰을 요청하는 데 사용됩니다.
  3. 엑세스 토큰 요청(Access Token Request): 클라이언트는 권한 부여 코드와 클라이언트의 인증 정보를 인증 서버에 제출하며, 엑세스 토큰을 요청합니다.
  4. 엑세스 토큰 발급(Access Token Response): 인증 서버는 클라이언트의 요청을 검증하고, 유효하다면 엑세스 토큰(및 선택적으로 리프레시 토큰)을 발급합니다. 엑세스 토큰은 리소스 서버에 접근할 때 사용됩니다.
  5. 리소스 요청(Resource Request): 클라이언트는 엑세스 토큰을 사용하여 리소스 서버에 접근하고, 사용자 데이터에 대한 요청을 합니다.
  6. 리소스 응답(Resource Response): 리소스 서버는 클라이언트의 엑세스 토큰을 검증하고, 요청이 유효하다면 요청된 데이터를 클라이언트에게 제공합니다.
더보기

OAuth 2.0은 또한 다양한 권한 부여 유형(Authorization Grant Types)을 지원합니다. 이에는 다음과 같은 것들이 포함됩니다.

 

- Authorization Code: 웹 애플리케이션용으로 설계되었습니다.

- Implicit: 클라이언트 사이드 애플리케이션(ex: SPA)에 사용됩니다.

- Resource Owner Password Credentials: 사용자 이름과 비밀번호를 직접 입력해야 하는 시나리오에 사용됩니다.

- Client Credentials: 클라이언트가 자신의 리소스에 접근할 때 사용됩니다.

사용 사례

1. 소셜 로그인

  • 소셜 미디어 로그인 기능은 웹 사이트나 애플리케이션에서 매우 흔히 볼 수 있는 OAuth의 대표적인 사용 사례입니다. 사용자는 Facebook, Google, Twitter 등 자신이 이미 계정을 가지고 있는 소셜 미디어 서비스를 통해 다른 웹 사이트나 애플리케이션에 로그인할 수 있습니다. 이를 통해 사용자는 별도의 계정을 만들지 않고도 서비스를 이용할 수 있으며, 서비스 제공자는 사용자의 기본적인 프로필 정보를 쉽게 가져올 수 있습니다.

2. 데이터 공유

  • 다양한 온라인 서비스들이 사용자의 데이터를 안전하게 공유할 수 있도록 OAuth를 사용합니다. 예를 들어, 피트니스 앱이 Google Fit이나 Apple Health와 같은 건강 관리 서비스로부터 운동 및 건강 데이터를 가져오거나, 반대로 데이터를 전송할 때 OAuth를 사용할 수 있습니다. 이를 통해 사용자는 여러 서비스 간에 자신의 데이터를 원활하게 연동하여 사용할 수 있습니다.

3. 제3자 애플리케이션 접근 제어

  • 사용자가 특정 서비스의 데이터나 기능에 대한 접근 권한을 제3자 애플리케이션에 부여할 수 있도록 OAuth를 사용합니다. 예를 들어, 사용자가 자신의 이메일 계정에 접근할 수 있는 권한을 이메일 관리 앱에 부여하거나, 소셜 미디어 관리 도구가 사용자의 소셜 미디어 계정을 대신하여 게시물을 올릴 수 있도록 설정할 때 OAuth가 사용됩니다. 이 경우 OAuth는 사용자가 제3자 앱에 자신의 로그인 정보를 직접 공개하지 않고도 필요한 권한을 부여할 수 있게 해 줍니다.

4. 클라우드 서비스 통합

  • 기업이나 개발자들이 클라우드 기반 서비스를 통합할 때 OAuth를 사용할 수 있습니다. 예를 들어, 클라우드 스토리지 서비스에 파일을 저장하거나, 클라우드 기반 CRM(Customer Relationship Management) 시스템에 접근하는 등의 경우에 OAuth를 통해 안전하게 인증 및 권한 부여를 수행할 수 있습니다.

5. 스마트 디바이스

  • IoT(Internet of Things) 디바이스나 스마트 홈 장치들이 사용자의 계정 정보에 안전하게 접근할 수 있도록 OAuth가 사용될 수 있습니다. 예를 들어, 스마트 스피커가 사용자의 음악 스트리밍 서비스 계정에 접근하여 음악을 재생하거나, 스마트 홈 카메라가 클라우드 스토리지 서비스에 비디오를 저장할 때 OAuth를 활용할 수 있습니다.

 

오늘은 OAuth에 대해서 알아보았습니다.

보안 관련 KeyCloak에 대한 내용도 함께 보시면 좋습니다!

2024.04.05 - [IT] - [키클록] KeyCloak란? (개념, 특징, 장단점, OpenID Connect)

 

[키클록] KeyCloak란? (개념, 특징, 장단점, OpenID Connect)

KeyCloak은 오픈 소스 아이덴티티 및 엑세스 관리 솔루션으로, 애플리케이션 및 서비스에 대한 보안 인증 및 권한 부여를 제공합니다. Red Hat이 주도하는 이 프로젝트는 주로 Java 언어로 작성되어

yuna-ninano.tistory.com

반응형