-
OAuth 2.0의 주요 컴포넌트와 Authorization Code Grant 흐름웹 개발 2025. 5. 17. 14:35
OAuth 2.0의 주요 컴포넌트와 Authorization Code Grant 흐름과 같이 개념적인 부분을 서술한 문서입니다.
OAuth 2.0은 클라이언트 또는 제 3자 애플리케이션이 사용자의 비밀번호를 직접 알지 않고도, 사용자를 대신해 정보에 접근할 수 있도록 권한을 위임하는 프로토콜입니다.e.g. 넷플릭스 계정을 구글 계정으로 로그인할 때 구글에 비밀번호를 입력하지만 넷플릭스는 구글 비밀번호를 모릅니다. 구글에서 인증된 사용자로 토큰Token을 발급해주면, 넷플릭스는 그 토큰 정보를 확인하고 로그인을 시켜줍니다.
OAuth 2.0의 주요 컴포넌트
Resource Owner, Client, Authorization Server, Resource Server
Resource Owner(자원 소유) : 사용자
Client(클라이언트 애플리케이션) : 권한을 위임받고자 하는 애플리케이션
Authorization Server (인가 서버) : 사용자 인증 및 권한 토큰(Access Token) 부여
Resource Server(리소스 서버) : 보호된 정보를 제공하는 서버. 유효한 Access Token 을 가진 요청에만 제공
Authorization Code Grant 흐름
사용자 인가 요청 → 로그인 및 동의 → 인가 코드 발급 → 토큰 요청 → 액세스 토큰 + 리프레시 토큰 발급 → 보호 리소스 접근
1. 사용자 인가 요청
클라이언트는 사용자의 권한을 얻기 위해 Authorization Server에 인가를 요청합니다. 이때 사용자는 브라우저를 통해 인가 요청 URL로 리디섹션됩니다.
2. 로그인 및 동의
사용자는 Authorization Server의 로그인 페이지에 로그인하고, 클라이언트가 요청한 권한 범위에 대해 동의 여부를 결정합니다.
3. 인가 코드 발급
사용자가 로그인 및 동의를 완료하면, Authorization Server는 redirect_uri로 Authorization Code를 전달*합니다.
*이때, 짧은 시간 동안만 유효한 1회용 코드를 전달
4. 토큰 요청
클라이언트는 받은 Authorization Code를 이용해서 Authorization Server에 Access Token을 요청합니다.
5. 액세스 토큰(Access Token) + 리프레시 토큰(Refresh Token) 발급
Authorization Server는 요청이 유효하면 Access Token, 선택적으로 Refresh Token을 발급합니다.
6. 보호 리소스 접근
클라이언트는 발급받은 Access Token을 Authorization Header에 포함시켜 보호된 자원(API)을 요청한다.
'웹 개발' 카테고리의 다른 글
세션 기반 인증과 토큰 기반 인증 (0) 2025.05.17 Mockito의 Mock, Stub, Spy (0) 2025.03.30 입력값 검증의 범위와 책임 (0) 2025.03.30 개발자 도구(DevTools)로 API 요청 확인하기 (0) 2025.03.14 웹 API란? (1) 2025.03.02