OAuth는 자신이 소유한 리소스에 제3의 애플리케이션이 접근할 수 있도록 권한을 위임해주는 개방형 표준 프로토콜이다.
사용자가 직접 자격 증명(아이디/비밀번호)을 제공하지 않아도, 특정 서비스가 사용자의 리소스(예: 이메일, 프로필 등)에 접근할 수 있게 한다.
OAuth의 핵심 개념
- 사용자는 한 번의 인가 과정만으로 다양한 서비스에 안전하게 접근을 허용할 수 있다.
- 애플리케이션은 사용자의 개인 정보(ID/PW) 없이도, 사용자의 허락 하에 API를 호출할 수 있는 권한을 얻게 된다.
- 이러한 과정을 통해 보안성과 편의성을 동시에 확보할 수 있다.
OAuth 2.0의 역할
현재 널리 사용되는 버전은 OAuth 2.0이며, 다음과 같은 기능을 제공한다:
- 다양한 클라이언트 환경(Web, App 등)에 적합한 인증(Authentication) 및
인가(Authorization) 방식 제공 - 그 결과로 Access Token(접근 토큰)을 클라이언트에게 발급
- 이 토큰을 통해 클라이언트는 API에 접근할 수 있으며, 주로 JWT 형태로 발급된다.
권한 부여 방식(Grant Types)
OAuth 2.0은 상황에 따라 4가지 방식으로 권한을 위임할 수 있다:
- Authorization Code (가장 일반적)
- 주로 웹 애플리케이션과 모바일 앱에서 사용
- 인가 코드(Authorization Code)를 먼저 받은 뒤, 이를 통해 Access Token을 발급받는 방식
- 보안성이 높아 가장 널리 사용됨
- Implicit (현재는 권장되지 않음)
- 주로 브라우저 기반 애플리케이션에서 사용
- 인가 코드 없이 곧바로 Access Token을 발급받음
- 클라이언트 보안이 취약한 환경에서 주로 사용되었으나, 현재는 사용 자제 권고
- Resource Owner Password Credentials (Password 방식,
현재는 권장되지 않음)- 사용자가 아이디와 비밀번호를 직접 입력해 토큰을 발급받는 방식
- 보안상의 이유로 자체 서비스에서만 제한적으로 사용
- 외부 앱에서 사용은 권장되지 않음
- Client Credentials
- 사용자가 아닌, 서버 간 통신 또는 시스템 대 시스템 인증 시 사용
- 클라이언트 애플리케이션 자체를 인증하여 토큰을 발급받음
OAuth의 동작 흐름 요약
- 사용자가 애플리케이션을 통해 인증 요청
- 인증 서버는 사용자의 동의 하에 Access Token을 발급
- 클라이언트는 이 토큰을 사용하여 API 서버에 요청
- API 서버는 토큰의 유효성을 검증한 후, 요청된 리소스를 반환
정리하면
- OAuth는 권한 위임(Authorization Delegation)을 위한 표준 프로토콜
- OAuth 2.0은 다양한 인증 시나리오에 적합한 Grant Type을 제공
- Access Token을 통해 클라이언트는 사용자의 리소스에 안전하게 접근 가능
- 실제 구현에서는 JWT 토큰 형식으로 Access Token을 주고받는 경우가 많음
OAuth는 인증과 인가를 분리하여 보안성을 높이면서도 사용자 편의성을 제공하는 대표적인 인증 기술임.
SNS 로그인, 외부 API 연동, 마이크로서비스 구조 등 다양한 현대 웹/앱 환경에서 널리 활용되고 있다.
'Backend > Java & Spring' 카테고리의 다른 글
| filter와 interceptor의 차이 (0) | 2025.06.01 |
|---|---|
| 애노테이션(Annotation)이란? (0) | 2025.05.30 |
| 제네릭(Generic)이란? (1) | 2025.05.28 |
| 인스턴스화란 무엇인가? (1) | 2025.05.27 |
| 상속 (0) | 2024.12.22 |