자신이 소유한 리소스에 소프트웨어 어플리케이션이 접근할 수 있도록 허용해줌으로써 접근 권한을 위임해주는 프로토콜이다. 즉 애플리케이션이 리소스 소유자에게 리소스에 대한 접근 권한을 요청하고, 요청 결과로 전달받은 토큰을 이용해 애플리케이션이 해당 리소스에 접근하는 프로토콜이다.
Oauth 2.0 스펙에는 다음과 같이 정의되어 있다.
Oauth2.0 인가 프레임워크는 리소스 소유자를 대신해 HTTP 서비스와 리소스에 대한 접근 요청 승인을
조정하거나 리소스 소유자를 대신해 서드파티 애플리케이션에게 리소스에 대한 접근을 허용해주는 방식
으로 HTTP 서비스에 대한 서드파티 애플리케이션의 접근을 가능하게 해준다.
좀 더 풀어 설명하자면, 인가 프레임워크로서 OAuth는 시스템의 어떤 구성 요소가 다른 시스템의 어떤 구성요소에 대한 접근 권한을 얻을 수 있게 해주는 것이다. 특히, Oauth의 세계에서 클라리언트 애플리케이션은 리소스 소유자를 대신해 리소스 소유자의 보호된 리소스에 대한 접근 권한을 얻길 원한다.
다음은 지금까지 언급한 OAuth의 구성원 들이다.
Oauth는 Oauth에 스펙에 정의된 엑세스 토큰을 얻기 위한 방법 프로토콜을 Oauth라고 간주한다.
자격증명 탈취
리소스 소유자의 자격 증명을 복사해 보호된 리소스에 전달했다. 일반적으로 중앙에서 제어되고, 이와 동시에 클라이언와 보호된 리소스 간에 합의된 형태의 자격 증명이 이용되는데, 세션 쿠키와 같은 자격 증명으로 마치 사용자가 직접 로그인 한 것과 같이 보호된 리소스에 접근이 가능해진다. 이 방법은 사용자의 비밀번호가 클라리언트 애플리케이션에게 노출이 되고, 클라이언트는 사용자의 이름과 비밀번호를 이용하여 사용자로 가장을 한다.
때문에 보호된 리소스의 입장에서는 접근하는 자가 실제 리소스 소유자인지, 가장한 클라이언트인지 구분 할 수 가 없다. 또한 신뢰할 수 없는 클라리언트에게 사용자의 중요한 자격 증명이 노출 될 수 있다. 그리고 클라이언트 애플리케이션이 침해되면 공격자는 클라이언트 자체 뿐만 아니라 보호된 리소스에 대한 접근 권한을 획득한다. 그렇게 되면 동일한 비밀번호를 사용하는 사용자의 다른 서비스에도 접근 할 수 있게 된다.
장점
OAuth 2.0은 권함 위임 절차로인해 리소스 소유자가 중요한 보안 결정의 최종 승인자로 사용자 주도 보안을 실현한다. OAuth는 많은 유동적인 부분으로 이뤄진 프로토콜이나, 간단하고 안전하다. 또한 확장성과 모듈화는 가장 큰 장점 중 하나로 매우 다양한 환경에서도 적용해 사용할 수 있다.
단점
인가 서버와 보호된 리소스는 보다 많은 복장성과 보안을 담당하게 된다. 인가 서버는 시스템상의 모든 클라이언트와 사용자에 대한 자격 증명과 토큰을 관리해야만 한다. 그러나 여러개의 클라이언트를 안전하게 관리하는 것보다는 하나의 인가 서버를 안전하게 관리하는 편이 훨씬 쉬운일이다.