OAuth 2.0이란 무엇인가?

1. OAuth 2.0이란 무엇인가?

OAuth 2.0은 타사 애플리케이션이 사용자의 ID나 비밀번호에 직접 접근하지 않고, 대신 권한만을 위임받아 데이터를 처리할 수 있도록 설계된 인증 및 권한 부여 프로토콜입니다. 이를 통해 사용자와 서비스 간의 보안성이 크게 향상됩니다.

OAuth의 기본 개념

OAuth에서 인증은 사용자가 직접 인증 서버에서 수행하며, 클라이언트 애플리케이션은 이 인증 과정에 직접 관여하지 않습니다. 인증이 완료된 후, 클라이언트는 Access Token을 통해 권한을 받아 필요한 자원에 접근할 수 있습니다.

  • Resource Owner: 자원의 소유자, 즉 사용자.
  • Client: 사용자의 자원에 접근하려는 애플리케이션.
  • Authorization Server: 사용자의 신원을 인증하고, 자원에 대한 접근 권한을 부여하는 서버.
  • Resource Server: 사용자의 데이터를 제공하는 서버(예: Google, Facebook API).

2. OAuth 2.0의 필요성: 기존 방식의 문제점

OAuth가 도입되기 전, 대부분의 서비스는 사용자의 ID와 비밀번호를 직접 받아 로그인하고 데이터를 처리했습니다. 이러한 방식은 심각한 보안 취약성을 야기할 수 있었습니다.

보안 위험

  • ID와 비밀번호 노출 위험: 사용자가 ID와 비밀번호를 타사 서비스에 제공하면, 그 정보가 의도치 않게 노출될 가능성이 있습니다.
  • 과도한 권한 부여: 사용자는 특정 자원에만 접근을 허용하고 싶어도, 모든 자원에 대한 접근 권한을 부여하게 되는 상황이 발생할 수 있습니다.

OAuth 2.0의 해결책: OAuth 2.0은 사용자의 민감한 정보를 보호하면서도 타사 서비스가 필요한 권한만을 받아 데이터를 처리할 수 있게 해줍니다.

3. OAuth 2.0의 흐름 (Authorization Code Flow)

OAuth 2.0에서 가장 많이 사용되는 흐름은 Authorization Code Flow입니다. 이 흐름은 웹 애플리케이션에서 사용자가 타사 서비스에 로그인을 통해 권한을 부여받을 때 활용됩니다.

Authorization Code Flow 단계

  1. 사용자의 인증: 사용자는 구글, 페이스북 등 인증 제공자에게 로그인하여 자신의 신원을 인증합니다.
  2. Authorization Code 발급: 인증 서버는 클라이언트 애플리케이션에게 Authorization Code를 발급합니다.
  3. Access Token 요청: 클라이언트는 Authorization Code를 사용하여 인증 서버에 Access Token을 요청합니다.
  4. Access Token 발급: 인증 서버는 클라이언트에게 Access Token을 발급합니다.
  5. API 요청 및 데이터 사용: 클라이언트는 Access Token을 사용하여 리소스 서버에 데이터를 요청합니다.

4. OAuth 2.0의 주요 장점

1. 보안성 강화

OAuth 2.0의 가장 큰 장점은 보안성입니다. 클라이언트 애플리케이션이 사용자의 민감한 정보를 직접적으로 다루지 않으며, 권한을 제한적으로 부여받아 필요한 데이터만을 처리할 수 있습니다.

2. 권한의 최소화

OAuth 2.0은 사용자가 애플리케이션에 부여하는 권한을 필요 최소한으로 제한할 수 있습니다.

3. HTTPS를 통한 안전한 통신

OAuth 2.0은 HTTPS를 사용하여 통신을 암호화합니다. 이를 통해 데이터 전송 중에 발생할 수 있는 정보 탈취나 악의적인 공격을 예방할 수 있습니다.

5. OpenID Connect와의 차이점

OAuth 2.0은 주로 인가(Authorization)를 위한 프로토콜입니다. 반면, OpenID Connect는 OAuth 2.0을 확장하여 인증(Authentication)도 처리할 수 있도록 합니다.

OAuth 2.0과 OpenID Connect의 주요 차이점

  • OAuth 2.0: 사용자의 데이터에 접근하기 위한 권한 부여 프로토콜.
  • OpenID Connect: 사용자 인증을 위한 프로토콜.

6. 실제 적용 사례: Google Calendar API

OAuth 2.0은 다양한 서비스에서 활용되고 있습니다. 예를 들어, 애플리케이션이 사용자의 구글 캘린더에 접근하려고 할 때, 사용자의 ID와 비밀번호를 직접적으로 받지 않고, OAuth를 사용해 권한을 부여받습니다. 이를 통해 사용자는 구글에 안전하게 로그인하고, 구글로부터 Access Token을 받아 일정 정보를 가져오거나 추가할 수 있습니다.

7. 마무리

OAuth 2.0은 현대 웹 서비스에서 필수적인 인증 및 인가 프로토콜로 자리 잡았습니다. 사용자 데이터를 보호하면서도 클라이언트 애플리케이션이 안전하게 접근할 수 있도록 돕는 이 프로토콜은, 특히 API 연동 및 소셜 로그인 같은 환경에서 큰 역할을 하고 있습니다.


※ 참조 유튜브 링크

https://www.youtube.com/watch?v=iFvUIbZemEU

  • 카카오톡 메시지

댓글 쓰기

다음 이전