보안 · 심화
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 기반 시스템의 어떤 보안 취약점을 해결하고, 실제 구현 시 고려해야 할 설계 및 운영상의 주요 사항들을 설명해 주십시오.
힌트 · DPoP은 토큰 탈취 후 재사용을 방지하고, CIBA는 사용자 개입 없는 인증 플로우에 적합합니다. 각 기술의 동작 원리와 적용 시의 복잡성, 그리고 기존 시스템과의 통합 방안을 고려해야 합니다.
DPoPProof-of-Possession토큰 탈취replay 공격HTTP 메시지 서명
모범답안
DPoP를 선택하여 설명드리겠습니다. DPoP는 OAuth 2.0에서 토큰 탈취 후 재사용되는 replay 공격을 막기 위한 기술입니다. 액세스 토큰이 탈취당했을 때, 공격자는 해당 토큰을 사용하여 API에 접근할 수 있습니다. DPoP는 클라이언트가 요청마다 HTTP 메시지에 서명을 추가하여, 특정 클라이언트만이 토큰을 사용할 수 있도록 합니다.
구현 시에는 클라이언트와 서버 모두 DPoP 헤더를 처리할 수 있도록 변경해야 합니다. 클라이언트는 각 요청에 서명을 생성하고, 서버는 서명을 검증해야 합니다. 키 관리도 중요한데, 클라이언트의 공개 키를 안전하게 관리하고, 키 로테이션 전략을 수립해야 합니다. 또한, DPoP 적용으로 인한 성능 저하를 최소화하기 위해 서명 검증 로직을 최적화해야 합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 인증 / 인가 (JWT · OAuth) 면접 질문
- JWT 기반 인증 시스템에서 Access Token이 만료되었을 때, 클라이언트와 서버는 각각 어떻게 처리해야 하는지 구체적인 시나리오를 들어 설명해 주세요.
- OAuth 2.0에서 PKCE(Proof Key for Code Exchange) 확장이 도입된 배경과 이 확장 기능이 Public Client(예: 모바일 앱, SPA) 환경에서 어떤 보안 문제를 해결하는지 설명해 주세요.
- Stateless한 JWT의 특성에도 불구하고, 서버 측에서 특정 JWT를 강제로 무효화(Revocation)해야 하는 상황이 발생할 수 있습니다. 이러한 상황에서 JWT를 무효화할 수 있는 전략들을 설명해 주세요.
- 대규모 분산 환경에서 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) 전략에 대해 설명해 주십시오. 특히, 클라이언트로부터 받은 액세스 토큰을 백엔드 서비스들이 안전하고 효율적으로 검증하고 활용할 수 있도록 하는 방법에 대한 여러 접근 방식(예: 토큰 변환, 토큰 전달, 인가 정보 캐싱)을 비교하고, 각 방식의 장단점 및 적절한 사용 시나리오를 제시해 주십시오.