oauth는 api를 사용하는데, 사용자의 개인 정보를 사용할 필요가 있을 때, 사용자의 정보에 접근할 수 있도록 인증을 받는 방법입니다.

먼저 api를 사용하면서 사용자의 정보에 접근하게되는 상황을 보면 다음과 같습니다.

**서비스(app/ web)**은 사용자에게 기능을 제공하고, 이를 위해 사용자의 정보를 필요로 합니다.

**서비스 사용자(회원/ 가입자/ 서비스 이용자)**는 서비스를 이용합니다.

서비스가 접근하고자 하는 **사용자 개인정보(게시물/ 친구목록/ 일정 등)**는 api를 제공하는 **서버(구글/ 페이스북/ 카카오톡 등)**에 저장되어 있습니다.

이러한 상황에서 서비스가 사용자의 개인정보를 이용하기 위해 개인정보가 있는 서버로부터 인증을 받는 절차로 oauth를 사용합니다.

oauth를 이해하기 앞서, oauth의 각 주체를 나타내는 단어가 있습니다.

클라이언트(서비스/ 앱/ 웹): 서비스를 제공하고 리소스에 접근하고자 하는 대상입니다.

리소스: 사용자의 개인 정보입니다. 사용자의 일정, 게시물, 친구목록 등을 말합니다.

리소스 서버: 리소스가 저장된 서버입니다. 구글, 페이스북, 카카오톡 등이 있습니다. api를 제공합니다.

리소스 오너: 사용자입니다. 클라이언트가 리소스서버에 접근하도록 허락해줍니다.

리소스오너의 리소스는 리소스서버에 저장되어 있고 클라이언트는 리소스를 얻기 위해 리소스 서버에 요청하고자 합니다.

만약 클라이언트에게 리소스서버에 접속할 수 있도록 리소스오너의 id와 pw를 주게 된다면, 클라이언트를 신뢰할 수 있는가의 문제가 있습니다.

그래서 많은 api에서 oauth라는 정형화된 인증절차를 사용하고 있습니다.