OAuth 2.0의 'Authorization Code Grant'와 'Client Credentials Grant'는 각각 어떤 상황에 적합하며, 두 Grant Type의 주요 차이점은 무엇인가요?
힌트 · 사용자 개입이 필요한지 여부와 클라이언트의 유형(Public/Confidential)에 따라 적합한 Grant Type이 달라집니다.
모범답안
OAuth 2.0의 Authorization Code Grant와 Client Credentials Grant는 사용 목적과 방식에 뚜렷한 차이가 있습니다.
Authorization Code Grant는 사용자의 명시적인 동의가 필요한 경우에 적합합니다. 예를 들어, 사용자가 다른 서비스에 자신의 정보 접근 권한을 부여할 때 사용됩니다. 사용자는 인증 서버에 로그인하여 권한을 위임하고, 서비스는 Authorization Code를 받아 Access Token을 요청합니다. 이 과정에서 사용자의 동의가 핵심입니다.
반면, Client Credentials Grant는 사용자 동의 없이 애플리케이션 자체의 권한으로 접근해야 할 때 사용됩니다. 주로 백엔드 시스템 간의 통신이나, 스크립트가 API에 접근할 때 유용합니다. 이 방식은 Client ID와 Client Secret을 사용하여 인증하며, Confidential Client(Client Secret을 안전하게 보관할 수 있는 서버)에 적합합니다.
주요 차이점은 사용자 개입 여부와 클라이언트의 유형입니다. Authorization Code Grant는 사용자 동의가 필요하고 Public Client 또는 Confidential Client 모두 사용할 수 있지만, Client Credentials Grant는 사용자 동의가 필요 없고 Confidential Client만 사용할 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 인증 / 인가 (JWT · OAuth) 면접 질문
- Access Token과 Refresh Token은 OAuth 2.0에서 어떤 차이가 있으며, Refresh Token이 필요한 주된 이유는 무엇인가요?
- OAuth 2.0의 여러 Grant Type 중 'Authorization Code Grant Type'은 어떤 환경에서 주로 사용되며, 그 이유는 무엇인가요?
- JWT(JSON Web Token)는 무엇이며, 토큰 기반 인증 시스템에서 어떤 장점을 제공하나요?
- 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에 추가적으로 제공하는 핵심 기능은 무엇인가요?