pulse.huny.dev
HunyDev
Essential Security Practices for OAuth 2.0 Authorization Code Flow

Essential Security Practices for OAuth 2.0 Authorization Code Flow

PKCE와 state로 OAuth 보안 강화하기

Hun Jang
Hun Jang Dec 4, 2025

OAuth 2.0 “인가 코드(Authorization Code)” 플로우를 쓸 때 꼭 챙겨야 할 보안 체크리스트를 한 장으로 정리

1) PKCE는 “무조건 켜기”

  • 무엇: code_verifier / code_challenge로 인가 코드 가로채기 공격을 막는 확장.
  • : 모바일·SPA 같은 퍼블릭 클라이언트 보호용으로 시작했지만, 지금은 모든 클라이언트에 권장/사실상 표준입니다. (IETF Datatracker)

구현 팁

  • code_challenge_method는 S256 사용.
  • 서버는 발급 시 저장 안 해도 됨(클라이언트가 나중에 verifier 제시). (IETF Datatracker)

2) state로 CSRF 묶기

  • 무엇: 요청 ↔ 콜백을 하나의 세션으로 바인딩하는 임의 문자열.
  • 원칙: 강한 랜덤·1회용, 사용자 에이전트에 바인딩, 콜백에서 정확히 검증. 민감정보 넣지 않기. (IETF Datatracker)

체크

3) 다중 IdP면 **RFC 9207 iss*로 믹스업 방지

  • 문제: 여러 인가서버(IdP)를 쓰면 A에게서 시작한 흐름이 B의 응답으로 섞이는(mix‑up) 공격 가능.
  • 해법: 응답에 iss(issuer) 를 포함하고, 클라이언트가 예상한 발급자와 일치하는지 검증. (IETF Datatracker)

4) 최신 BCP 따라가세요

  • 리다이렉트 URI 엄격 검증, Implicit 등 취약 모드 사용 금지, 브라우저·네이티브 앱 별 모범사례 준수. (OAuth 2.0 보안 BCP / OAuth 2.1 초안) (IETF Datatracker)

You might also like

BlogPro logo
Made with BlogPro

Tags