OAuth2와 Authorization Server
OAuth2와 Authorization Server, 플로우(authorization code, client credentials), resource server, scopes
1OAuth2란 무엇인가요?
OAuth2란 무엇인가요?
답변
OAuth2는 사용자의 credentials를 노출하지 않고도 서드파티 애플리케이션이 사용자를 대신하여 HTTP 서비스에 제한된 접근 권한을 얻을 수 있도록 하는 인가 프로토콜입니다. 비밀번호 대신 access token을 통해 작동합니다. OAuth2는 위임 인증(Google, GitHub 등을 통한 로그인)과 보안 REST API에 널리 사용됩니다.
2웹 애플리케이션에 가장 안전한 OAuth2 플로우는 무엇인가요?
웹 애플리케이션에 가장 안전한 OAuth2 플로우는 무엇인가요?
답변
Authorization Code flow는 access token이 브라우저에 노출되지 않기 때문에 가장 안전한 플로우입니다. 백엔드 애플리케이션은 보안 채널(backend-to-backend)을 통해 임시 authorization code를 access token으로 교환합니다. PKCE(Proof Key for Code Exchange)를 사용하면 이 플로우는 가로채기 공격에 대해 더욱 안전해집니다.
3Client Credentials flow는 어떤 경우에 사용해야 하나요?
Client Credentials flow는 어떤 경우에 사용해야 하나요?
답변
Client Credentials flow는 사용자 컨텍스트가 없는 machine-to-machine(service-to-service) 통신을 위해 설계되었습니다. 클라이언트 애플리케이션은 자체 credentials(client_id 및 client_secret)로 직접 인증하여 access token을 얻습니다. 배치 작업, 마이크로서비스 또는 자체 명의로 동작하는 백엔드 API에 사용됩니다.
OAuth2에서 PKCE(Proof Key for Code Exchange)란 무엇인가요?
OAuth2에서 Implicit flow가 더 이상 권장되지 않는 이유는 무엇인가요?
+17 면접 질문