
OAuth(Open Authorization)는 타사 애플리케이션이 사용자의 자격 증명을 직접 요청하지 않고도, 안전하게 자원에 접근할 수 있도록 권한을 위임하는 인증 프로토콜로 사용자와 직접적인 상호 작용 없이 다른 서비스에 접근할 수 있게 하는 점에서 특히 보안에 중요한 역할을 하며, 주로 웹 애플리케이션, 모바일 애플리케이션, API를 위한 인증 및 권한 부여 방법으로 널리 사용된다.
OAuth는 클라이언트(애플리케이션)가 자원 소유자(사용자)의 자원을 접근하려고 할 때, 자격 증명 없이도 자원을 안전하게 이용할 수 있게 해준다. 이때 OAuth는 클라이언트가 직접적으로 자원에 접근하지 않고, 자원 소유자의 권한을 위임받아 자원에 접근하는 구조다.
일반적으로 OAuth에는 네 가지 역할이 있다.
OAuth는 사용자에게 클라이언트에 자원에 접근할 권한을 줄 수 있도록 하여, 클라이언트가 사용자 자격 증명(아이디, 비밀번호 등)을 요구하지 않아도 되도록 설계되었다. 이 과정에서 사용자가 클라이언트 애플리케이션에 권한을 부여하면 권한 서버는 클라이언트에게 액세스 토큰을 발급한다. 클라이언트는 이 토큰을 사용해 자원 서버에 자원을 요청하고, 자원 서버는 이 토큰을 확인해 권한이 유효한지 확인한 후 자원에 접근을 허용한다.
OAuth는 타사 애플리케이션이 사용자 자격 증명을 직접적으로 다루지 않게 하기 때문에 보안을 강화한다. 이를 통해 클라이언트 애플리케이션이 사용자 이름과 비밀번호를 직접 요청하지 않고, 사용자 데이터에 안전하게 접근할 수 있게 한다.
사용자는 자격 증명을 한 번만 제공하여 여러 애플리케이션에서 자신의 데이터를 안전하게 공유할 수 있다. 예를 들어, 타사 애플리케이션에 소셜 미디어 계정을 연동하여 간편하게 로그인할 수 있다.
OAuth는 특정 자원에 대한 접근 권한을 제한하거나 특정 기간 동안만 권한을 부여할 수 있도록 지원한다. 예를들어, 사용자에게 일정 시간 동안만 접근 권한을 주거나, 일부 데이터만 접근할 수 있도록 설정할 수 있다.
OAuth는 다양한 애플리케이션 간에 안전하게 데이터를 공유하고 통합할 수 있게 해준다. 예를 들어, 구글 계정을 사용해 다른 서비스에 쉽게 로그인하거나 구글 캘린더 데이터를 다른 앱과 연동할 수 있다.
OAuth를 활용한 소셜 로그인 흐름을 예로들 수 있다.