OAuth 2.0에서 PKCE(Proof Key for Code Exchange) 확장이 도입된 배경과 이 확장 기능이 Public Client(예: 모바일 앱, SPA) 환경에서 어떤 보안 문제를 해결하는지 설명해 주세요.
힌트 · Authorization Code 가로채기 공격을 방지하기 위해 Code Verifier와 Code Challenge를 사용하여 클라이언트의 신원을 확인합니다.
모범답안
OAuth 2.0에서 PKCE는 주로 Public Client 환경, 예를 들어 모바일 앱이나 SPA(Single Page Application)에서 발생하는 보안 취약점을 해결하기 위해 도입되었습니다.
가장 큰 문제는 "Authorization Code 가로채기" 공격입니다. Public Client는 Secret Key를 안전하게 보관할 수 없기 때문에, 공격자가 인가 코드를 가로채서 자신의 애플리케이션으로 토큰을 요청할 수 있습니다.
PKCE는 이를 방지하기 위해 "Code Verifier"와 "Code Challenge"라는 개념을 사용합니다. 클라이언트는 먼저 임의의 문자열인 Code Verifier를 생성하고, 이를 해싱하여 Code Challenge를 만듭니다. 인가 요청 시 Code Challenge를 서버에 보내고, 토큰 요청 시 Code Verifier를 함께 보냅니다. 서버는 Code Challenge와 Code Verifier를 비교하여 요청이 최초 인가 요청을 보낸 클라이언트로부터 온 것인지 확인합니다.
이러한 방식으로 PKCE는 공격자가 인가 코드를 가로채더라도 토큰을 획득하는 것을 막아, Public Client 환경에서 OAuth 2.0의 보안성을 강화합니다. 또한, 기밀 클라이언트를 가장하여 토큰을 탈취하는 공격도 방지할 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 인증 / 인가 (JWT · OAuth) 면접 질문
- Access Token과 Refresh Token을 분리하여 사용하는 것이 일반적인데, 이와 같이 토큰을 분리하는 주된 이유와 각각의 보안적 이점을 설명해 주세요.
- OpenID Connect(OIDC)는 OAuth 2.0 위에 구축된 프로토콜입니다. OAuth 2.0과 OIDC의 관계를 설명하고, OIDC가 OAuth 2.0에 추가적으로 제공하는 핵심 기능은 무엇인가요?
- JWT 기반 인증 시스템에서 Access Token이 만료되었을 때, 클라이언트와 서버는 각각 어떻게 처리해야 하는지 구체적인 시나리오를 들어 설명해 주세요.
- Stateless한 JWT의 특성에도 불구하고, 서버 측에서 특정 JWT를 강제로 무효화(Revocation)해야 하는 상황이 발생할 수 있습니다. 이러한 상황에서 JWT를 무효화할 수 있는 전략들을 설명해 주세요.
- OAuth 2.0 Authorization Code Flow에서 PKCE(Proof Key for Code Exchange)를 사용하는 것이 일반적입니다. 하지만 더욱 강화된 보안을 위해 DPoP(Demonstration of Proof-of-Possession) 또는 CIBA(Client Initiated Backchannel Authentication)와 같은 확장 기능들이 논의되고 있습니다. 이들 중 하나를 선택하여, 해당 기술이 OAuth 2.0/OpenID Connect 기반 시스템의 어떤 보안 취약점을 해결하고, 실제 구현 시 고려해야 할 설계 및 운영상의 주요 사항들을 설명해 주십시오.
- 대규모 분산 환경에서 JWT(JSON Web Token) 기반의 액세스 토큰을 사용하는 경우, 특정 사용자의 세션을 강제로 만료시키거나 토큰을 즉시 무효화해야 할 필요가 발생할 수 있습니다. JWT는 자체 검증 가능(self-contained)하다는 특성 때문에 서버에서 직접 관리하기 어렵습니다. 이러한 분산 환경에서 JWT의 즉각적인 무효화를 효과적으로 구현하기 위한 여러 전략(예: 블랙리스트, 체크리스트, 짧은 만료 시간과 리프레시 토큰 활용 등)과 각 전략의 장단점, 그리고 시스템 부하 및 일관성 측면에서의 고려사항을 설명해 주십시오.