전체 목록
보안Medium#221

OAuth 2.0에서 Authorization Code Flow를 사용하는 이유는 무엇인가요?

#보안#OAuth2#PKCE#인증

답변 포인트

토큰 노출 최소화와 PKCE를 기준으로 정의, 장점, 한계, 예시를 함께 설명해보세요.

정답 및 해설

빠른 요약

Authorization Code Flow는 브라우저에 액세스 토큰을 직접 노출하지 않고 서버 측에서 code를 토큰으로 교환합니다. 공개 클라이언트에서는 PKCE를 함께 사용합니다.

OAuth 2.0의 Authorization Code Flow는 사용자의 비밀번호를 클라이언트 애플리케이션에 노출하지 않고, 인가 서버를 통해 안전하게 access token을 발급받기 위한 방식입니다. 특히 서버 사이드 웹 앱과 PKCE를 적용한 SPA/모바일 앱에서 표준적으로 사용됩니다.

흐름

Text
1.     
2.  /
3.   redirect_uri authorization code 
4.  code + client secret  PKCE verifier token 
5. access token 

토큰이 브라우저 URL fragment로 바로 노출되는 implicit flow보다 안전합니다.

왜 code를 한 번 더 교환하나요?

Authorization code는 짧은 수명과 단회 사용을 전제로 합니다. 실제 access token은 back-channel 요청으로 교환하므로 브라우저 히스토리, Referer, 악성 스크립트에 직접 노출될 가능성이 줄어듭니다.

PKCE의 역할

공개 클라이언트(SPA, 모바일)는 client secret을 안전하게 숨길 수 없습니다. PKCE는 code_verifiercode_challenge를 사용해 code를 가로챈 공격자가 토큰으로 교환하지 못하게 합니다.

실무 주의점

  • redirect_uri는 정확히 등록된 값만 허용합니다.
  • state 파라미터로 CSRF를 방어합니다.
  • scope는 필요한 최소 권한만 요청합니다.
  • refresh token은 rotation과 재사용 감지를 적용합니다.

면접 답변 포인트

Authorization Code Flow는 토큰을 프론트 채널에 직접 노출하지 않고 code를 안전하게 교환하기 위한 흐름입니다. PKCE, state, redirect_uri 검증, scope 최소화를 함께 설명하면 좋습니다.

관련 질문

같은 카테고리/태그 기준