
WEB2 - OAuth 2.0 : 1.수업소개
- 나의 서비스
- 사용자
- 나의 서비스가 연동하려 하는 그들의 서비스(Google, Facebook, Twitter)
- 사용자를 대신하여 그들의 서비스에 접근하여 서비스를 제공하기 위해서는 사용자로부터 그 사용자가 사용하고 있는 그들의 서비스에 접근할 수 있는 권한을 받아야 한다.
- 사용자의 Id, Password를 제공받아 기억하고 있다가 그들의 서비스에 접근하려고 할 때 이용하는 방법은 아주 간단하면서도 매우 강력하다.
- 하지만 사용자의 Id, Password를 가지고 있는 행위는 매우 위험하다.
- 사용자가 사용하는 Id, Password 데이터는 높은 확률로 다른 서비스에서도 같은 데이터를 사용하기 때문에 유출 되었을 경우 큰 보안 사고가 발생하게 된다.
- 나의 서비스도 마찬가지로 데이터가 유출 되었을 때 유출에 대해 책임져야할 부분이 매우 크다.
- 그들의 서비스 입장에서도 자신들의 사용자 데이터를 신뢰할 수 없는 제 3의 서비스가 가지고 있는다는 것은 다소 불만족스러울 것이다.
- OAuth는 훨씬 더 안전하게 나의 서비스와 그들의 서비스가 상호작용할 수 있도록 돕는다.
- 유저의 요청에 의해 그들의 서비스는 accessToken 이라는 비밀번호와 유사한 데이터를 발급해준다.
- accessToken은 유저의 아이디와 비밀번호가 아니라는 점, 나의 서비스에서 꼭 필요한 기능만을 허용한다는 점에서 유용하다.
- accessToken을 통해 그들의 서비스의 데이터를 생성하고 수정하고 삭제하는 등의 기능을 이용할 수 있다.
- 이러한 OAuth를 이용하면, 처음부터 회원의 아이디, 패스워드를 보관하지 않고, 회원을 식별할 수 있는 기능을 구현할 수 있다. (구글 로그인, 카카오 로그인, 페이스북 로그인 등...)
- 이러한 인증 방법을 Federated Identity 라고 부른다.

WEB2 - OAuth 2.0 : 2. 역할
- 3개의 주체
- Client = 우리가 만든 서비스. Resource Server에 접속하여 데이터를 가져가는 주체
- Resource Owner = 우리가 만든 서비스를 이용하는 사용자. Resource Server의 데이터를 소유하는 주체
- Resource Server = 사용자가 회원가입되어 있고, 우리 서비스가 제어하고자 하는 데이터를 가지고 있는 서버가 되는 주체
++ Authorization Server: 인증과 관련된 처리를 전담하는 서버. 공식 문서에서는 리소스 서버와 분리하여 표기하고 있음