OAuth
하나의 세션동안 사용자의 신원을 확인하여 인증하는 것을 말합니다. 인증 방식으로는 다음과 같은 것들이 있습니다.
- 기본인증(ID/PW)
- 토큰 인증
- 전자 서명
흔히 애플리케이션에서 사용자의 신원을 확인하기 위해 ID와 PW를 이용한 기본 인증방식을 사용합니다. 일반적으로 로그인 == 사용자 인증으로 오해하고 있는데, 로그인은 사용자 인증의 한 방식일 뿐입니다. 그러나 기본 인증 방식은 보안에 매우 취약한 구조이기 때문에 다른 대안들이 떠오르고 있는데 OAuth가 그 중 하나입니다. OAuth는 위의 인증방식 중 토큰 인증 방식을 사용합니다.
대부분 서비스는 자체적으로 기본인증을 바탕으로 한 사용자 인증 방식을 개발하고 있습니다. 그렇게 되면 서비스마다 다른 인증방식을 사용하게 되는데 OAuth는 이처럼 서비스마다 제각각인 인증 방식을 표준화한 인증방식이라고 할 수 있습니다.
자신의 애플리케이션에서 사용자 인증을 하기 위해 다른 애플리케이션의 사용자인증방식을 하도록 인가하는 것이 OAuth입니다. OAuth는 사용자 인증 프로토콜이 아닌, 인가 프로토콜입니다.
OAuth 구성요소
- Client
- Resource를 직접 사용하는 사용자
- Resource Owner
- OAuth를 사용하는 사용자
- 일반 애플리케이션 ex)”페이스북으로 로그인하기”, “네이버로 로그인하기”등 등을 갖고 있는 사이트
- Authorization Server
- OAuth 인증 서버
- Resource Server
- Rest API Server
- 사용자 인증이 잘 되어 있는 애플리케이션 ex)네이버, 페이프북
OAuth 진행 과정
OAuth 진행 과정은 왓챠라는 웹 서비스에서 “페이스북으로 로그인”하는 방식에 대한 예시로 설명하겠습니다.
- 왓챠에 접속
- “페이스북으로 회원가입 하기”버튼 클릭
- 페이스북 로그인 창으로 이동
- 페이스북 로그인 성공
- “해당 사이트의 접근을 허용할 것인가?”창이 생성
- “허용”을 누르면 왓챠에서 로그인 목적으로 사용할 수 있는 토큰(Token)을 페이스북이 발급
- 발급받은 토큰을 이용하여 만료기간까지 서비스를 사용
위의 예시를 보면 토큰을 발급해줌으로써 로그인 할 수 있는 권한을 부여한 것입니다.
OAuth의 과정
- 사용자 인증 방식이 잘 구현된 어떤 회사(or 서비스)에 인증을 인가
- 인증 절차 수행
- 인증 되었다는 토큰을 받아 나의 애플리케이션에 여러 권한들을 부여