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