TIL
🌱 난 오늘 무엇을 공부했을까?
📌 OAuth / Social Login
📍 OAuth 란?
OAuth("Open Authorization")는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다.
- 사용자가 직접 아이디와 비밀번호를 입력하는 기본 인증이 아닐 경우는 각 애플리케이션들이 각자의 개발한 회사의 방법대로 사용자를 확인하였다.
예를 들면 구글의 AuthSub, AOL의 OpenAuth, 야후의 BBAuth, 아마존의 웹서비스 API 등이 있다.
- OAuth는 이렇게 제각각인 인증방식을 표준화한 인증방식이다.
OAuth를 이용하면 이 인증을 공유하는 애플리케이션끼리는 별도의 인증이 필요없다.
- 따라서 여러 애플리케이션을 통합하여 사용하는 것이 가능하게 된다.
OAuth는 사용자가 누구인지를 확인하는 인증(Authentication) 프로토콜이 아닌, 사용자의 요청이 권한이 있는지를 확인하는 인가(Authorization) 프로토콜이다.
📍 용어
- 사용자(user): 서비스 제공자와 소비자를 사용하는 계정을 가지고 있는 개인
- 소비자(consumer): Open API를 이용하여 개발된 OAuth를 사용하여 서비스 제공자에게 접근하는 웹사이트 또는 애플리케이션
- 서비스 제공자(service provider): OAuth를 통해 접근을 지원하는 웹 애플리케이션(Open API를 제공하는 서비스)
- 소비자 비밀번호(consumer secret) : 서비스 제공자에서 소비자가 자신임을 인증하기 위한 키
- 요청 토큰(request token) : 소비자가 사용자에게 접근권한을 인증받기 위해 필요한 정보가 담겨있으며 후에 접근 토큰으로 변환된다.
- 접근 토큰(access token) : 인증 후에 사용자가 서비스 제공자가 아닌 소비자를 통해서 보호된 자원에 접근하기 위한 키를 포함한 값.
📍 인증방식
- OAuth인증은 소비자와 서비스 제공자 사이에서 일어나는데 이 인증 과정은 다음과 같다
- 소비자가 서비스제공자에게 요청토큰을 요청한다.
- 서비스제공자가 소비자에게 요청토큰을 발급해준다.
- 소비자가 사용자를 서비스제공자로 이동시킨다. 여기서 사용자 인증이 수행된다.
- 서비스제공자가 사용자를 소비자로 이동시킨다.
- 소비자가 접근토큰을 요청한다.
- 서비스제공자가 접근토큰을 발급한다.
- 발급된 접근토큰을 이용하여 소비자에서 사용자 정보에 접근한다.
위키백과
📍 예시
출처