인증(Authentication)에서 '신원 확인'과 인가(Authorization)에서 '권한 확인'은 각각 어떤 정보를 기준으로 판단하나요? 로그인 이후 매 요청마다 이 두 가지가 어떻게 적용되는지 설명해주세요.
힌트 · 신원을 증명하는 단계와 그 신원이 무엇을 할 수 있는지 판단하는 단계를 구분해서 접근하세요.
모범답안
인증(Authentication)에서 신원 확인은 사용자가 누구인지 증명하는 과정입니다. 주로 사용자 ID와 비밀번호 같은 자격 증명을 기반으로 합니다. 사용자가 제공한 정보가 저장된 정보와 일치하는지 확인하여 신원을 확정합니다.
인가(Authorization)에서 권한 확인은 인증된 사용자가 특정 리소스나 기능에 접근할 수 있는지 판단하는 과정입니다. 이는 사용자의 역할, 권한 목록, 또는 정책 등을 기반으로 합니다. 예를 들어, 관리자 역할은 모든 기능에 접근 가능하지만, 일반 사용자는 제한된 기능만 접근할 수 있습니다.
로그인 이후 매 요청마다 이 두 가지는 다음과 같이 적용됩니다.
인증 (신원 확인): 사용자가 처음 로그인할 때 사용자 ID와 비밀번호를 제출하여 신원을 확인합니다. 성공하면 서버는 보통 세션 ID나 JWT(JSON Web Token)와 같은 인증 토큰을 발급합니다. 이 토큰은 사용자의 신원을 증명하는 역할을 합니다.
인가 (권한 확인): 이후 사용자가 어떤 요청을 보낼 때마다, 요청 헤더에 이 인증 토큰을 포함시킵니다. 서버는 이 토큰을 검증하여 사용자가 누구인지 다시 한번 확인하고(인증), 해당 사용자가 요청한 작업(예: 특정 데이터 조회, 파일 수정)을 수행할 권한이 있는지(인가)를 확인합니다. 권한이 있다면 요청을 처리하고, 없다면 접근을 거부합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 웹 보안 면접 질문
- CSRF(Cross-Site Request Forgery) 공격이란 무엇이며, 방어 방법을 설명해주세요.
- SQL Injection 공격이란 무엇이며, 어떻게 예방할 수 있나요?
- 인증(Authentication)과 인가(Authorization)의 차이를 설명하고, 구체적인 예시를 들어주세요.
- 역할 기반 접근 제어(RBAC)란 무엇이며, 사용자에게 권한을 직접 부여하는 방식과 비교해 어떤 장점이 있나요?
- OAuth 2.0의 Authorization Code Grant 플로우에서 인가 코드(authorization code)와 액세스 토큰을 분리해서 두 단계로 주고받는 이유는 무엇인가요?
- HTTPS와 TLS의 동작 원리를 설명해주세요.