데이터 전처리: 데이터 수집 기법 – API 인증(OAuth2
ㅁ 데이터 수집 기법
1. API 인증(OAuth2)
ㅇ 정의:
제3자 애플리케이션이 사용자의 자격 증명을 직접 노출하지 않고, 액세스 토큰을 통해 API 자원에 접근할 수 있도록 하는 인증 프로토콜. 주로 REST API 호출 시 보안과 권한 제어를 위해 사용됨.
ㅇ 특징:
– Access Token, Refresh Token을 사용하여 세션 유지
– 권한 범위(Scope)를 명시하여 최소 권한 원칙 적용
– Authorization Code, Implicit, Resource Owner Password Credentials, Client Credentials 등 다양한 플로우 지원
– HTTPS 기반 통신 필수
ㅇ 적합한 경우:
– 외부 서비스(API)와의 연동에서 사용자 계정 보안을 유지해야 하는 경우
– 모바일/웹 앱에서 제3자 로그인(Google, Facebook 등)을 구현할 때
– 마이크로서비스 간 안전한 데이터 교환이 필요한 경우
ㅇ 시험 함정:
– OAuth2는 인증(Authentication)보다는 권한 부여(Authorization)에 초점이 있다는 점 혼동
– Access Token은 만료 시간이 있으며, Refresh Token으로 재발급 가능하다는 점 누락
– 모든 플로우가 동일한 보안 수준을 제공하는 것이 아님 (Implicit Flow는 보안 취약 가능성)
ㅇ 시험 대비 “패턴 보기” 예시:
O: “OAuth2는 액세스 토큰을 사용하여 API 접근 권한을 부여한다.”
O: “OAuth2의 Authorization Code Flow는 서버 간 안전한 토큰 교환을 위해 사용된다.”
X: “OAuth2는 사용자 비밀번호를 직접 전달하여 인증한다.”
X: “OAuth2는 인증(Authentication) 프로토콜이다.”
ㅁ 추가 학습 내용
OAuth2는 여러 인증 플로우를 제공하며, 각 플로우별 특징과 보안 수준에 차이가 있다.
Authorization Code Flow는 서버 측 애플리케이션에 적합하며, 클라이언트 시크릿을 안전하게 보관할 수 있는 환경에서 사용된다.
Implicit Flow는 브라우저 기반 애플리케이션에서 사용되었으나, 액세스 토큰이 URL 해시로 노출되는 등 보안 취약점이 있어 현재는 권장되지 않는다.
PKCE(Proof Key for Code Exchange)는 Authorization Code Flow에서 코드 탈취 공격을 방지하기 위해 사용되는 기법으로, 코드 챌린지와 코드 베리파이어를 통해 인증 코드가 안전하게 교환되도록 한다. OAuth2.1에서는 PKCE 사용이 기본적으로 요구된다.
JWT(JSON Web Token) 기반 액세스 토큰은 헤더, 페이로드, 서명으로 구성되며, 서명 부분을 통해 토큰의 위변조 여부를 검증한다.
Scope는 애플리케이션이 접근할 수 있는 자원과 권한의 범위를 의미하며, Role은 사용자 또는 시스템이 가진 권한 수준이나 직무 역할을 나타낸다.
토큰 탈취를 방지하기 위해 HTTPS/TLS를 사용하여 네트워크 구간에서 데이터가 암호화되도록 해야 한다.