OAuth
OAuth란 무엇인가요?
OAuth는 권한 부여 정보를 교환하는 데 사용되는 프로토콜로, 사용자의 허가하에 여러 온라인 서비스가 상호 작용할 수 있도록 합니다. "OAuth 1.0"은 2010년 4월 RFC 5849로 발표되었으며, 이어 "OAuth 2.0"이 2012년 10월 RFC 6749로 발표되었습니다.
Instagram에 사진을 게시하고 이를 Twitter에도 자동으로 공유하고 싶다고 가정해 보겠습니다. 동일한 게시물을 올리기 위해 두 서비스에 일일이 접속하는 것은 번거로울 수 있습니다. 이를 위해 Instagram은 크로스 포스팅이라는 기능을 제공합니다. 이 기능은 API를 사용하여 Instagram 게시물을 Twitter와 같은 다른 소셜 네트워크에 자동으로 공유할 수 있게 해 줍니다. 이 과정은 OAuth를 통해 이루어집니다.
Twitter에 게시물을 올리려면 일반적으로 사용자 ID와 비밀번호를 사용하는 인증이 필요하며, 이를 기본 인증(Basic Authentication)이라고 합니다. 하지만 이러한 민감한 인증 정보를 다른 서비스와 공유하는 것은 위험합니다. OAuth는 인증 정보 대신 권한 부여 정보를 교환하고 작업에 필요한 제한된 권한만 부여함으로써 이 문제를 해결합니다.
OAuth 용어로는 다음과 같습니다:
- 권한 부여를 받는 서비스(예: Instagram)를 OAuth 클라이언트라고 합니다.
- 권한을 부여하는 서비스(예: Twitter)를 OAuth 서버라고 합니다.
- 사용자를 리소스 소유자(Resource Owner)라고 합니다.
프로세스를 시작하려면 OAuth 클라이언트가 먼저 애플리케이션 이름과 도메인 등의 정보를 제공하여 OAuth 서버에 등록해야 합니다. OAuth 서버가 해당 클라이언트를 신뢰할 수 있다고 판단하면 클라이언트 ID를 할당합니다.
사용자(리소스 소유자)가 권한을 부여하면 OAuth 클라이언트는 사용자를 OAuth 서버로 리디렉션합니다. OAuth 서버는 사용자를 인증하고 명시된 권한을 OAuth 클라이언트에 부여할지 묻습니다. 사용자가 승인하면 서버는 사용자를 OAuth 클라이언트로 다시 리디렉션하면서 액세스 토큰을 발급합니다. 이 토큰은 권한 부여의 증명으로 사용되며, OAuth 클라이언트가 OAuth 서버의 API에 액세스할 수 있도록 합니다. 토큰은 만료되거나 명시적으로 취소될 때까지 유효합니다.

