본문 바로가기

ETC

[ETC] OAuth 1.0과 2.0의 차이

728x90
반응형

OAuth와 OAuth 2.0은 모두 웹 애플리케이션과 API를 위한 인증 프레임워크이지만, OAuth 2.0은 OAuth 1.0의 단점을 보완하고 더 유연하고 확장 가능한 방식으로 발전된 버전이다.

 

 OAuth 2.0에 대해서는 이전 포스팅 2024.08.29 - [ETC] - [ETC] OAuth 2.0 이란? 에서 다뤘으니 확인해보자.

 

오늘 포스팅에서는 주요 차이점에 대해 알아보자.


1. 버전 간 개요

  • OAuth 1.0: 2007년에 처음 도입된 버전으로, 사용자가 자신의 자원에 대한 접근을 타사 애플리케이션에 안전하게 위임할 수 있도록 설계되었다.
  • OAuth 2.0: 2012년에 발표된 OAuth의 차기 버전으로, 보다 유연한 인증 방식을 제공하고, 구현이 더 간단하며, 다양한 사용 사례를 지원하도록 설계되었다.

2. 서명 및 보안

  • OAuth 1.0:
    • 모든 요청에 대해 암호화 서명(Signature)을 요구했다. 이 서명은 클라이언트 비밀 키를 사용하여 생성되며, 이를 통해 요청의 무결성을 보장한다.
    • 서명 검증은 복잡하고 구현이 어려웠다.
    • 주요 단점: 모든 요청에 대해 암호화 서명을 요구하기 때문에 구현이 복잡해지며, 실수로 인해 보안 취약점이 발생할 가능성이 있었다.
  • OAuth 2.0:
    • 서명 기반 인증을 제거하고, 대신 HTTPS를 통한 암호화된 통신을 요구한다. 즉, 보안은 HTTPS에 의존한다.
    • 장점: 서명 과정이 없기 때문에 구현이 더 단순하고, 다양한 환경에서 쉽게 사용할 수 있다.

3. 토큰 처리 방식

  • OAuth 1.0:
    • Access Token과 Request Token을 명시적으로 정의하고 사용했다.
    • 토큰은 보통 서명되어 있었고, 비밀 키가 포함된 복잡한 인증 과정이 필요했다.
  • OAuth 2.0:
    • Access Token 및 Refresh Token을 도입하여 더 유연하게 처리할 수 있다.
    • 토큰은 단순한 문자열이며, 필요에 따라 JSON Web Token(JWT) 같은 포맷을 사용할 수 있다.
    • 토큰 만료와 갱신이 더 쉬워졌다.

4. 승인 방식 (Grant Types)

  • OAuth 1.0:
    • 단일 인증 흐름만 지원했으며, 이것이 모든 상황에 적합하지 않았다. (특히 모바일 및 클라이언트 측 애플리케이션의 경우)
  • OAuth 2.0:
    • 다양한 승인 방식을 제공한다(예: Authorization Code, Implicit, Resource Owner Password Credentials, Client Credentials).
    • 각 승인 방식은 다른 유형의 애플리케이션에 맞게 설계되었으며, 더 많은 유연성을 제공한다.

5. 차이점

  • 복잡성:
    • OAuth 1.0은 클라이언트와 서버 간에 긴밀한 보안 관계를 요구하여 구현이 복잡했다.
    • OAuth 2.0은 표준화된 인증 절차를 통해 구현이 단순화되었다.
  • 확장성:
    • OAuth 2.0은 확장성이 더 뛰어나고, 다양한 시나리오에 맞게 커스터마이징할 수 있다.
  • 배포 및 호환성:
    • OAuth 2.0은 이전 버전과 호환되지 않으며, 전환 시 새로운 클라이언트 및 서버 구현이 필요하다.

요약

OAuth 1.0은 보안에 집중하여 서명 기반 접근을 강조했지만, 구현이 복잡하고 확장성이 떨어졌다.

반면 OAuth 2.0은 HTTPS를 통한 보안을 중시하며, 구현이 더 간단하고 다양한 인증 흐름을 제공하여 다양한 애플리케이션 시나리오에서 쉽게 사용할 수 있게 되었다.

결과적으로 OAuth 2.0은 많은 서비스에서 OAuth 1.0을 대체하며 널리 사용되고 있다.

728x90
반응형