OAuth 2.0 또는 OpenID Connect 인증 흐름에서 발생할 수 있는 CSRF(Cross-Site Request Forgery), XSS(Cross-Site Scripting), Open Redirect와 같은 일반적인 웹 취약점들이 인증 과정에 어떻게 영향을 미칠 수 있는지 구체적인 공격 시나리오를 들어 설명해 주십시오. 또한, 각 취약점에 대한 효과적인 방어 메커니즘(예: `state` 파라미터, `redirect_uri` 유효성 검사, CSP, SameSite Cookie)을 제시하고, 이들을 인증 시스템 설계에 어떻게 반영할 것인지 설명해 주십시오.
힌트 · `state` 파라미터는 CSRF와 Open Redirect를 방지하며, `redirect_uri` 화이트리스트는 Open Redirect 공격을 막습니다. XSS는 인증 페이지 자체의 취약점을 통해 토큰 탈취로 이어질 수 있습니다.
모범답안
OAuth 2.0/OpenID Connect 인증 흐름에서 CSRF, XSS, Open Redirect 같은 취약점은 심각한 문제를 야기할 수 있습니다.
CSRF 공격은 사용자가 인지하지 못한 채 악성 웹사이트가 인증 서버에 요청을 보내도록 유도합니다. 예를 들어, 공격자는 사용자가 로그인된 상태에서 악성 링크를 클릭하도록 유도하여, 사용자의 계정으로 특정 애플리케이션에 권한을 부여할 수 있습니다. 이를 방지하기 위해 state 파라미터를 사용하여 요청의 무결성을 검증합니다.
XSS 공격은 인증 페이지에 악성 스크립트를 삽입하여 사용자의 토큰을 탈취할 수 있습니다. 이를 막기 위해 Content Security Policy (CSP)를 적용하고, 입력 값에 대한 철저한 검증 및 이스케이프 처리가 필요합니다.
Open Redirect 공격은 인증 후 악성 웹사이트로 리디렉션되도록 redirect_uri를 조작하는 것입니다. redirect_uri 화이트리스트를 사용하여 허용된 URI만 리디렉션되도록 제한해야 합니다. 또한, state 파라미터를 사용하여 리디렉션의 무결성을 검증할 수 있습니다.
이러한 방어 메커니즘을 인증 시스템 설계에 반영하여 보안성을 강화해야 합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 인증 / 인가 (JWT · OAuth) 면접 질문
- 대규모 분산 환경에서 JWT(JSON Web Token) 기반의 액세스 토큰을 사용하는 경우, 특정 사용자의 세션을 강제로 만료시키거나 토큰을 즉시 무효화해야 할 필요가 발생할 수 있습니다. JWT는 자체 검증 가능(self-contained)하다는 특성 때문에 서버에서 직접 관리하기 어렵습니다. 이러한 분산 환경에서 JWT의 즉각적인 무효화를 효과적으로 구현하기 위한 여러 전략(예: 블랙리스트, 체크리스트, 짧은 만료 시간과 리프레시 토큰 활용 등)과 각 전략의 장단점, 그리고 시스템 부하 및 일관성 측면에서의 고려사항을 설명해 주십시오.
- OAuth 2.0에서 리프레시 토큰(Refresh Token)은 액세스 토큰을 재발급하는 데 사용되며, 장기간 유효성을 가집니다. 이때 리프레시 토큰 재사용 공격(Refresh Token Replay Attack)을 방지하기 위해 롤링(Rotation) 전략이 권장됩니다. 리프레시 토큰 롤링의 정확한 동작 방식과 이점이 무엇인지 설명하고, 롤링 전략을 구현할 때 발생할 수 있는 잠재적인 문제점(예: 동시 요청 처리, 클라이언트 상태 관리)과 이에 대한 해결 방안을 제시해 주십시오.
- 마이크로서비스 아키텍처 환경에서 OAuth 2.0 또는 OpenID Connect 기반의 인증/인가 시스템을 설계할 때, API Gateway의 역할과 토큰 전달(Token Propagation) 전략에 대해 설명해 주십시오. 특히, 클라이언트로부터 받은 액세스 토큰을 백엔드 서비스들이 안전하고 효율적으로 검증하고 활용할 수 있도록 하는 방법에 대한 여러 접근 방식(예: 토큰 변환, 토큰 전달, 인가 정보 캐싱)을 비교하고, 각 방식의 장단점 및 적절한 사용 시나리오를 제시해 주십시오.
- OpenID Connect는 OAuth 2.0 위에 아이덴티티 레이어를 추가하여 사용자 인증을 제공합니다. 표준 스코프(profile, email 등) 외에, 특정 비즈니스 요구사항을 만족시키기 위해 커스텀 스코프(Custom Scope)와 클레임(Custom Claim)을 정의하여 사용할 수 있습니다. 커스텀 스코프와 클레임을 설계하고 구현할 때 고려해야 할 보안 및 상호 운용성(Interoperability) 측면의 주요 사항들을 설명하고, 이를 통해 얻을 수 있는 이점과 발생할 수 있는 문제점을 제시해 주십시오.
- 대규모 엔터프라이즈 환경에서 여러 서비스와 애플리케이션 간에 통합된 사용자 인증 및 인가(Federated Identity Management)를 구현하기 위해 OpenID Connect를 활용하는 방안을 설명해 주십시오. 특히, 여러 Identity Provider(IdP)를 연동해야 하는 시나리오(예: 소셜 로그인, 기업 SSO)에서 OpenID Connect 브로커링(Brokering) 또는 프록싱(Proxying) 패턴의 필요성과 동작 원리를 설명하고, 이 패턴을 도입할 때의 장단점과 주요 설계 고려사항을 제시해 주십시오.