OAuth 2.0
ref. https://junuuu.tistory.com/405?category=1014988
OAuth 2.0 이란?
Open Authentication의 약자로 다양한 플랫폼 환경에서 권한 부여를 위한 산업 표준 프로토콜
제 3의 앱이 자원의 소유자인 서비스 이용자를 대신하여 서비스(구글, 네이버, 카카오)를 요청할 수 있도록 자원 접근 권한을 위임하는 방법
사용자에게 인증을 제공하지만, 주된 목적으로는 인증된 사용자의 이름이나 이메일을 가져오는 등의 권한을 제공해준다.
OAuth의 등장 배경
애플리케이션에서 타 서비스를 사용하고 싶다면, 간단하게 고객의 아이디/비밀번호를 받아서 로그인하면 된다.
하지만, 이에 세 가지 문제점이 존재한다.
- 타 서비스에서는 애플리케이션을 신뢰하지 못한다.
- 애플리케이션에서 네이버의 정보를 관리하는 것이 부담이다. (보안적으로 신경 쓸 포인트가 증가한다)
- 사용자는 애플리케이션을 신뢰할 수 없다.
이런 문제점을 해결하고 안전하게 사용하기 위해 OAuth가 등장하게 되었다.
- Resource Owner: 사용자
- Resource Server: API 서버
- Client: 클라이언트
- Authorization Server: 권한 부여 서버
- Authentication Server: 인증 서버
Authorization Code Grant 방식을 통한 인증 과정
OAuth 2.0은 총 4가지 인증 방법을 가지고 있는데, 비교적 안전한 Authorization Code Grant 방식에 대해 설명해보고자 한다.
- 애플리케이션은 사용자로부터 Authorization Code를 받는다.
- 애플리케이션은 Authorization Server에게 Authorization code로 Acccess Token을 발급받는다.
- 애플리케이션은 Access Token으로 Resource Server에게 자원을 요청한다.
- 사용자에게 제공
각 포지션의 역할
- 프론트엔드
- OAuth 서버로 로그인 요청 후, Authorication Code를 발급받아 백엔드에 전달
- 백엔드
- Authorization Code로 OAuth 서버에 Access Token 요청
- Access Token으로 이름, 이메일 등의 정보 요청
- DB에 존재하지 않는 유저라면 새로 등록, DB에 존재하는 유저라면 정보 업데이트
- 이후 프론트엔드에게 Access Token과 Refresh Token 반환