1.OAuth 참여자
OAuth2.0 프로세스를 수행하는데 필요한 참여자는 크게 4가지로 구성됨
1. 사용자, 리소스 소유자, User / Resource Owner
-
OAuth 프로세스의 첫 번째 참여자는 사용자로, 특정 웹 서비스를 사용하는 실제 사람을 의미,
-
이 사용자는 개인 정보 및 개인화된 데이터(Resource)에 대한 소유권을 가진 리소스 소유자, Owner이기도 함
ex. 실제 사용자
2. 클라이언트 애플리케이션, Client Application
-
특정 서비스를 제공하는 웹 애플리케이션을 의미
-
현대 웹 개발에서는 주로 React, Vue와 같은 SPA 기반의 애플리케이션, 본 과정에서는 Next.js 기반의 애플리케이션 활용 예정
-
사용자가 실제로 이용하는 클라이언트 대상의 애플리케이션
ex. Next.js 애플리케이션
3. 리소스 서버, Resource Server
-
사용자의 개인 정보, 개별 데이터(리소스)를 보관하고 있는 서버를 의미
-
HTTP/HTTPS 기반의 REST API 요청을 통해 주로 JSON 형태의 리소스를 응답하는 API 서버
-
본 과정에서는 Spring Boot 기반의 서버를 구성하고, 토큰을 검증하기 위해 Spring Resource Server 프로젝트 의존성을 활용할 예정
4. 인가 서버, Authorization Server
-
클라이언트 애플리케이션이 리소스 소유자인 사용자를 대신해서 사용자의 개인 정보나 개인화 데이터(리소스)에 접근할 수 있는지에 대한 권한 관리 역할을 수행하는 서버를 의미
-
기본적으로 리소스에 대한 접근 권한 허용 여부는 리소스 소유자인 사용자가 가지고 있음
만약, 클라이언트 애플리케이션을 이용하는 사용자가 해당 클라이언트 앱 서비스의 특정 기능(사진 편집, 주문 내역 조회 등)을 이용하기 위해 클라이언트 앱 내부적으로 리소스 서버에게 사용자가 소유한 데이터에 대한 요청 처리 과정이 수행되어야 할 때,
인가 서버는 클라이언트 애플리케이션이 해당하는 특정 리소스에 대한 접근 권한에 대해 접근 가능한지와 같은 접근 허용 여부를 클라이언트 애플리케이션이 아닌 사용자에게 묻기 위해 리다이렉션(Redirection) 과정을 거쳐서 사용자에게 해당 리소스를 클라이언트 애플리케이션에게 제공해도 되는지에 대한 권한 부여 과정을 거치는 역할을 수행함
-
본 과정에서는 Spring Boot 기반의 서버를 구성하고, Spring Authorization Server 프로젝트 의존성을 활용할 예정