Spring Boot

OAuth2와 Authorization Server

OAuth2와 Authorization Server, 플로우(authorization code, client credentials), resource server, scopes

20 면접 질문·
Senior
1

OAuth2란 무엇인가요?

답변

OAuth2는 사용자의 credentials를 노출하지 않고도 서드파티 애플리케이션이 사용자를 대신하여 HTTP 서비스에 제한된 접근 권한을 얻을 수 있도록 하는 인가 프로토콜입니다. 비밀번호 대신 access token을 통해 작동합니다. OAuth2는 위임 인증(Google, GitHub 등을 통한 로그인)과 보안 REST API에 널리 사용됩니다.

2

웹 애플리케이션에 가장 안전한 OAuth2 플로우는 무엇인가요?

답변

Authorization Code flow는 access token이 브라우저에 노출되지 않기 때문에 가장 안전한 플로우입니다. 백엔드 애플리케이션은 보안 채널(backend-to-backend)을 통해 임시 authorization code를 access token으로 교환합니다. PKCE(Proof Key for Code Exchange)를 사용하면 이 플로우는 가로채기 공격에 대해 더욱 안전해집니다.

3

Client Credentials flow는 어떤 경우에 사용해야 하나요?

답변

Client Credentials flow는 사용자 컨텍스트가 없는 machine-to-machine(service-to-service) 통신을 위해 설계되었습니다. 클라이언트 애플리케이션은 자체 credentials(client_id 및 client_secret)로 직접 인증하여 access token을 얻습니다. 배치 작업, 마이크로서비스 또는 자체 명의로 동작하는 백엔드 API에 사용됩니다.

4

OAuth2에서 PKCE(Proof Key for Code Exchange)란 무엇인가요?

5

OAuth2에서 Implicit flow가 더 이상 권장되지 않는 이유는 무엇인가요?

+17 면접 질문

다음 면접을 위해 Spring Boot을 마스터하세요

모든 질문, flashcards, 기술 테스트, 코드 리뷰 연습, 면접 시뮬레이터에 접근하세요.

무료로 시작하기