JWT 기반 인증 시스템에서 Access Token이 만료되었을 때, 클라이언트와 서버는 각각 어떻게 처리해야 하는지 구체적인 시나리오를 들어 설명해 주세요.
힌트 · 클라이언트는 만료된 Access Token으로 요청 시 401 응답을 받으면 Refresh Token으로 새 Access Token을 요청하고, 서버는 Refresh Token의 유효성을 검증하여 재발급합니다.
모범답안
네, JWT 기반 인증 시스템에서 Access Token 만료 시 클라이언트와 서버의 처리 방식은 다음과 같습니다.
클라이언트: Access Token으로 API 요청을 보냈을 때 서버로부터 401 Unauthorized 응답을 받으면, Access Token이 만료되었다는 것을 인지합니다. 이 경우, 클라이언트는 Refresh Token을 사용하여 서버에 새로운 Access Token을 요청합니다. 만약 Refresh Token마저 만료되었거나 유효하지 않다면, 사용자를 다시 로그인 페이지로 리디렉션하여 새로운 인증을 받도록 합니다.
서버: 클라이언트로부터 Refresh Token과 함께 Access Token 재발급 요청을 받으면, Refresh Token의 유효성을 검증합니다. 유효하다면, 새로운 Access Token을 발급하여 클라이언트에게 전달합니다. 이때, 새로운 Refresh Token을 함께 발급하여 클라이언트에게 전달할 수도 있습니다. Refresh Token이 유효하지 않다면, 401 Unauthorized 또는 403 Forbidden 응답을 반환하여 클라이언트에게 인증 실패를 알립니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 인증 / 인가 (JWT · OAuth) 면접 질문
- JWT(JSON Web Token)의 구조(Header, Payload, Signature)에서 Signature 부분의 역할은 무엇이며, Signature를 통해 JWT의 어떤 보안 속성을 보장할 수 있는지 설명해 주세요.
- Access Token과 Refresh Token을 분리하여 사용하는 것이 일반적인데, 이와 같이 토큰을 분리하는 주된 이유와 각각의 보안적 이점을 설명해 주세요.
- OpenID Connect(OIDC)는 OAuth 2.0 위에 구축된 프로토콜입니다. OAuth 2.0과 OIDC의 관계를 설명하고, OIDC가 OAuth 2.0에 추가적으로 제공하는 핵심 기능은 무엇인가요?
- OAuth 2.0에서 PKCE(Proof Key for Code Exchange) 확장이 도입된 배경과 이 확장 기능이 Public Client(예: 모바일 앱, SPA) 환경에서 어떤 보안 문제를 해결하는지 설명해 주세요.
- 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 기반 시스템의 어떤 보안 취약점을 해결하고, 실제 구현 시 고려해야 할 설계 및 운영상의 주요 사항들을 설명해 주십시오.