OAuth 1.0 vs OAuth 2.0
얼마전에 잡 인터뷰중 질문 받은 거 중에 기억나는 하나.
OAuth의 1.0 과 2.0의 차이를 말해보시오 였다.
OAuth란
OAuth는 사용자가 다른 웹사이트 또는 애플리케이션에 로그인할 때 사용 할수 있다. (애플리케이션 인증을 위한 접근 관한 개방형 표준 프로토콜) 이를 사용하여 사용자는 다른 서비스에서 동일한 자격으로 로그인할 수 있으며, 사용자는 서비스 제공 사이트에 사용자의 비밀번호 정보를 제공하지 않고 로그인할 수 있다.
OAuth는 웹 및 모바일 애플리케이션에서 API를 보호하기 위해 사용이 되기도 한다.
사용자 인증 및 권한 부여를 담당하는 보안 프로토콜(Protocol) 이다 따라서, 만약 웹사이트나 애플리케이션에서 다른 서비스의 API를 사용하려면, OAuth를 사용하여 API를 보호하고 인증 및 권한 부여 할수 있다.
Open Authorization의 약자로 인터넷 사용자들이 비밀번호를 제공하지 않고, 다른 웹사이트에서 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근권한을 부여할 수 있는 공통적인 수단으로 사용되는, 접근 위임을 위한 개방형 표준 (Protocol)이다.
일단 OAuth에 어떤 버전이 있는지 찾아 보았다.
- OAuth 1.0
- RFC 5849: The OAuth 1.0 Protocol 에 정의 되어있다
- 세션 고정 공격 (Session Fixation Attack) 에 취약점이 발견되어 1.0a 개정판이 나오게 되었다 - OAuth 1.0 Revision A
- 1.0 spec의 세션 고정 공격을 해결하기 위해 만들어짐
- 1.0a 개정판을 만들었는데 2.0 인증 프레임워크가 나와 폐기됨;;; - OAuth 2.0
- RFC 6749 : The OAuth 2.0 Authorization Framework 에 정의
- 혼합 공격(Mix-Up Attack) 에 취약점 발견
- 많은 패치와 확장을 거쳐서 현재에 이르러 있다 - OAuth 2.1 (in-progress)
- 아직 확정 되진 않았지만, 현재는 2.1로 IETF 에서 아직 진행중
- 모든 인증 코드 부여에 대해 PKCE가 필요하다는게 중요 포인트
- 이전 legacy는 더이사 지원하지 않을 예정 (Implicit, Password Credentials )
- 아직 모든게 미정이지만, 계속 발전(?) 하고 있다.
OAuth 1.0 와 2.0 의 차이점
OAuth 1.0과 OAuth 2.0는 모두 API 보안을 위한 프로토콜이다. 그러나 두 프로토콜은 몇 가지 중요한 차이점이 있습니다.
- 토큰 갱신
OAuth 1.0에서는 토큰을 갱신하는 것이 어려웠다 하지만 OAuth 2.0에서는 새로운 토큰을 쉽게 발급하고 갱신할 수 있다.
- 인증 방식
OAuth 1.0 에서는 서명된 요청을 사용하여 사용자를 인증하지만, OAuth 2.0에서는 보안 토큰을 사용하여 인증합니다.
- 범용성
OAuth 2.0는 보다 범용적인 프로토콜이며, 모바일 기기와 같은 다양한 플랫폼에서 사용할 수 지만, 반면 OAuth 1.0은 덜 유연하며, 웹 기반 애플리케이션에서 주로 사용된다.
- 승인 방식
OAuth 1.0은 두 단계 승인 절차를 사용하지만, OAuth 2.0는 보다 단순한 승인 절차를 사용합니다.
이러한 차이점들은 OAuth 2.0가 더욱 유연하고 보안성이 높은 프로토콜이라는 것을 보여줍니다. 그러나 기존에 OAuth 1.0을 사용하는 애플리케이션이 많기 때문에, 이전에 구축된 애플리케이션에서는 여전히 OAuth 1을 사용하는 경우가 많다.
조금 더 보기 쉽게 OAuth 1.0 과 2.0의 차이를 표로 표시해 봤다.
비교 | OAuth1.0 | OAuth2.0 |
참여자 구분 | - 이용자 - 소비자 - 서비스 제공자 |
- 자원 소유자 - 클라이언트 - 권한 서버 - 자원 서버 |
토큰 | - 요청 토큰(Request Token) - 접근 토큰(Access Token) |
- 접근 토큰(Access Token) - 재발급 토큰(Refresh Token) |
유효기간 | 접근 토큰의 유효기간 없음 | - 접근 토큰 유효기간 부여 - 만료 시 재발급 토큰 이용 |
클라이언트 | 웹 서비스 | 웹 |
OAuth에 대해 검색해보면 OAuth 1이 더 안전하고 OAuth 2는 그렇지 않다는 인상을 받을 수 있다.
OAuth 1과 OAuth 2 모두 보안을 강화하기 위한 프로토콜이다. 하지만 두 프로토콜은 다른 방식으로 작동한다. OAuth 1.0은 요청된 시그치펴(서명)을 사용하여 사용자를 인증하고 보안을 유지한다. 반면에 OAuth 2.0는 보안 토큰을 사용하여 인증한다.
OAuth 2는 더욱 간단하고 범용적인 프로토콜이며, 모바일 기기와 같은 다양한 플랫폼에서 사용할 수 있지만 애플리케이션의 보안을 유지하는 데 필요한 추가적인 작업이 필요하다.
따라서, OAuth 1과 OAuth 2 중에서 어떤 것이 더 안전하다는 것은 사용하는 상황과 환경에 따라 달라진다. 적절한 보안 조치를 취하고 프로토콜을 적절하게 사용한다면, 둘 다 안전하게 사용할 수 있다.
OAuth 표준은 이링크에서 확인 할수 있다 - https://oauth.net/2/
'잡인터뷰' 카테고리의 다른 글
바이너리 서치 - Binary Search (2) | 2023.03.12 |
---|---|
SOLID 원칙 (SOLID Principle) - 객체지향 디자인 (0) | 2023.03.11 |
잡 인터뷰 - 투포인터 알고리즘(Two Pointer Approach) (4) | 2023.03.10 |
풀스택 개발자란? - What is Full Stack Developer (0) | 2023.03.10 |
잡 인터뷰 질문 1 - SOAP와 REST차이점 (2) | 2023.03.07 |