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
반응형
'ETC' 카테고리의 다른 글
[JavaScript] undefined와 null의 차이 (0) | 2024.09.22 |
---|---|
HTTP ERROR 정리 (0) | 2024.09.19 |
[ETC] OAuth 2.0 이란? (2) | 2024.09.08 |
[ETC] WS(Web Server)와 WAS(Web Application Server)의 차이 (2) | 2024.09.07 |
[ETC] 가독성이 좋은 코드란 무엇일까? (0) | 2024.09.04 |