보안 · 기초
OAuth 2.0의 Authorization Code Grant 플로우에서 인가 코드(authorization code)와 액세스 토큰을 분리해서 두 단계로 주고받는 이유는 무엇인가요?
힌트 · 브라우저(프론트 채널)와 서버(백 채널) 중 어디로 무엇이 전달되는지, 노출 위험 관점에서 접근하세요.
보안클라이언트서버토큰 탈취인가 코드
모범답안
OAuth 2.0의 Authorization Code Grant 플로우에서 인가 코드와 액세스 토큰을 분리하는 주된 이유는 보안 강화입니다.
인가 코드는 브라우저와 같은 프론트 채널을 통해 클라이언트 애플리케이션으로 전달됩니다. 이 과정에서 인가 코드가 노출되더라도, 이는 일회성으로 사용되며 제한된 권한만을 가지므로 즉각적인 큰 피해를 막을 수 있습니다.
반면, 액세스 토큰은 클라이언트 애플리케이션의 백엔드 서버와 인증 서버 간의 안전한 통신(백 채널)을 통해서만 교환됩니다. 액세스 토큰은 실제 리소스 접근 권한을 가지므로, 이를 직접 브라우저로 노출시키면 토큰 탈취 위험이 매우 커집니다. 인가 코드를 사용함으로써, 민감한 액세스 토큰은 안전한 백 채널을 통해서만 전달되도록 하여 토큰 탈취 위험을 최소화하는 것입니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 웹 보안 면접 질문
- 인증(Authentication)과 인가(Authorization)의 차이를 설명하고, 구체적인 예시를 들어주세요.
- 인증(Authentication)에서 '신원 확인'과 인가(Authorization)에서 '권한 확인'은 각각 어떤 정보를 기준으로 판단하나요? 로그인 이후 매 요청마다 이 두 가지가 어떻게 적용되는지 설명해주세요.
- 역할 기반 접근 제어(RBAC)란 무엇이며, 사용자에게 권한을 직접 부여하는 방식과 비교해 어떤 장점이 있나요?
- HTTPS와 TLS의 동작 원리를 설명해주세요.
- 대칭 암호화와 비대칭 암호화의 차이점을 설명하고, 각각의 사용 사례를 들어주세요.
- JWT(JSON Web Token)의 구조와 인증 방식, 그리고 보안 주의사항을 설명해주세요.