OAuth 2.0의 주요 컴포넌트와 Authorization Code Grant 흐름을 설명하세요.
보호된 자원에 대한 접근 권한을 가지고 있는 사용자로, 일반적으로 최종 사용자를 의미합니다.
사용자의 동의를 얻어 보호된 자원에 접근을 요청하는 애플리케이션입니다. 일반적으로 웹 또는 모바일 애플리케이션이 클라이언트 역할을 합니다.
사용자의 인증과 권한 부여를 담당하며, 클라이언트에게 접근 권한을 나타내는 토큰을 발급하는 서버입니다. 대표적으로 Google, Facebook, GitHub과 같은 OAuth 제공자가 여기에 해당합니다.
보호된 자원을 저장하고 관리하며, 클라이언트가 인증 서버로부터 발급받은 접근 토큰을 검증하여 접근을 허용하거나 거부하는 서버입니다.
Authorization Code Grant은 웹 애플리케이션에서 가장 널리 사용되는 OAuth 2.0의 흐름으로 다음 단계로 이루어집니다.
클라이언트는 사용자가 보호된 리소스에 접근하도록 인증 서버에 리디렉션하며 접근 범위를 지정합니다.
이때, 클라이언트 ID, 리디렉션 URI, 요청 범위 및 임의의 상태값이 전달됩니다.
사용자는 인증 서버의 화면에서 로그인을 수행하고, 클라이언트가 요청한 리소스 접근 권한을 승인합니다. 사용자가 승인하면, 인증 서버는 사용자를 클라이언트로 다시 리디렉션하면서 일회용 인가 코드를 전달합니다.
클라이언트는 인증 서버로부터 받은 인가 코드를 사용하여 접근 토큰을 요청합니다.
이때 클라이언트의 인증 정보를 포함한 요청을 인증 서버에 전송합니다.
인증 서버는 인가 코드를 검증한 후 접근 토큰을 발급하여 클라이언트에게 응답합니다. 일반적으로 접근 토큰과 함께 갱신 토큰도 제공됩니다.
클라이언트는 발급받은 접근 토큰을 이용하여 리소스 서버에 저장된 보호된 리소스에 접근합니다. 리소스 서버는 전달받은 접근 토큰의 유효성을 확인하고 적합한 경우 요청된 리소스를 반환합니다.