공식문서를 정독한다.
블로그를 찾아 읽으며 다양한 방식, 몰랐던 사실에 대해 파악한다.
: 웹 및 애플리케이션 인증 및 권한 부여를 위한 개방형 표준 프로토콜
- third-party 애플리케이션이 사용자의 리소스에 접근하기 위한 절차를 정의하고 서비스 제공자의 API를 사용할 수 있는 권한을 부여
- e.g. 네이버 로그인, 구글 로그인 같은 소셜 미디어 간편 로그인
- OAuth 등장 이전에는 구글의 AuthSub, 야후의 BBAuth 등 각자 회사가 개발한 방법이 존재했다. 2006년, 트위터와 Ma.gnolia가 주도적으로 개발하여 1.0을 출시하였으며, 이를 조금 더 단순화한 2.0이 2012년 등장하게 된다.
OAuth 2.0 역할
- 리소스 소유자: OAuth 2.0 프로토콜을 사용하여 보호되는 리소스에 대한 액세스 권한을 부여하는 사용자(엔티티)
- 클라이언트를 인증(Authorize)하는 역할을 수행한다.
- 클라이언트: OAuth 2.0을 사용하여 리소스에 접근하려는 third-party 애플리케이션이나 서비스
- 권한 서버: 클라이언트가 리소스 소유자의 권한을 얻을 수 있도록 도와주는 서버
- 권한 서버는 사용자 인증, 권한 부여 및 토큰 발급을 관리한다.
- 리소스 서버: 보호되는 리소스를 호스팅하는 서버로, 액세스를 허용하거나 거부한다.
- OAuth 2.0 토큰을 사용하여 클라이언트에게 리소스에 액세스할 권한을 부여하고 실제 데이터를 제공한다.
정리하면, 리소스 소유자 = 사용자, 클라이언트 = 브라우저, 권한 서버는 권한을 얻도록 도와주는 서버, 리소스 서버는 보호된 리소스를 호스팅하는 서버를 의미한다. 보통 권한 서버와 리소스 서버는 동일한 곳에서 제공을 하며 리소스 서버에서 권한 서버에 인증을 확인하고 리소스를 내려주는 방식이다.
OAuth 2.0 용어
- Access Token: 클라이언트가 리소스 서버의 리소스에 접근하기 위한 권한을 부여받는 토큰
- 액세스 토큰은 권한 서버로부터 발급되며, 일반적으로 제한된 유효 기간을 가지고 있다.
- Refresh Token: 액세스 토큰의 유효 기간이 만료된 후 새로운 액세스 토큰을 받기 위한 토큰
- 이를 통해 사용자는 다시 로그인할 필요 없이 토큰 유효 시간 갱신만으로 계속 애플리케이션을 사용할 수 있다.
- 범위: 범위는 클라이언트가 리소스에 대한 어떤 작업을 수행할 수 있는지를 정의하는 문자열
- 범위는 권한 서버에 의해 정의되며, 클라이언트는 특정 범위의 액세스 권한을 요청할 수 있습니다.