
OAuth는 사용자 인증 정보를 안전하게 공유하기 위한 표준 프로토콜이다. OAuth를 사용하면, 사용자들은 특정 애플리케이션에 자신의 인증 정보를 직접 공유하지 않고도 서비스 제공자에게 해당 애플리케이션의 정보 접근을 허용할 수 있다.
즉 OAuth는 "대리 인증이라고도 볼 수 있다. 사용자는 서비스 제공자를 통해 애플리케이션에 대한 특정 권한을 부여한다.
인증 요청
사용자가 서비스 제공자(구글)를 통해 애플리케이션에 로그인하려고 시도시 애플리케이션은 사용자를 해당 서비스 제공자의 인증 페이지로 이동시킨다.
승인
사용자가 서비스 제공자에 로그인하면, 서비스 제공자는 사용자에게 애플리케이션이 요청한 정보 접근 권한에 대해 승인을 요청한다.
엑세스 토큰
사용자가 승인하면, 서비스 제공자는 애플리케이션에 엑세스 토큰을 발급한다. 이 토큰은 애플리케이션이 사용자의 정보에 접근할 수 있는 "키"로 작동한다.
데이터 접근
애플리케이션이 엑세스 토큰을 받으면, 해당 토큰을 사용하여 서비스 제공자에게서 사용자의 데이터를 안전하게 요청하고 검색할 수 있다.
어차피 애플리케이션이 엑세스 토큰으로 사용자 데이터에 접근 가능하면 의미 없는거 아닌가?
A.
제한된 접근
애플리케이션은 사용자가 명시적으로 승인한 데이터만 접근할 수 있다.
사용자가 애플리케이션에게 이메일 주소만 공유할 권한을 부여했다면 애플리케이션은 사용자의 이메일 주소 외에 다른 데이터에는 접근할 수 없다.
Plus) 사용자 전체 데이터는 서비스 제공자에게 있고 애플리케이션은 그 중에서 토큰에서 정의된 허용된 영역만 접근 가능하다.
권한 취소
사용자는 언제든지 애플리케이션의 접근 권한을 취소할 수 있다. 권한을 취소하면, 애플리케이션은 더 이상 사용자의 데이터에 접근할 수 없다.
Plus) 서비스 제공자 (google 등 ) 에는 액세스 토큰을 무효화 할 수 있는 시스템을 가지고 있다. 또한 토큰에는 만료 시간이 있다.
비밀번호 노출 감소
사용자는 애플리케이션에 비밀번호를 제공하지 않으므로, 비밀번호 노출 위험이 줄어든다.
만약 애플리케이션이 해킹당하더라도, 사용자의 비밀번호는 안전하다.
토큰 만료
엑세스 토큰은 일정 시간 후에 만료되어, 애플리케이션은 사용자의 데이터에 더 이상 접근할 수 없게 된다. 애플리케이션은 사용자의 데이터에 계속 접근하려면, 사용자로부터 새로운 엑세스 토큰을 받아야 한다.