Cognito User Pool vs Identity Pool

Cognito User Pool과 Identity Pool의 차이점에 대한 질문을 자주 받기 때문에, 이에 대해 자세히 다루는 것이 좋겠습니다. 두 기능은 역할이 조금 비슷해 보이고, 정확히 무엇을 위한 것인지 명확하지 않을 수 있습니다. 먼저 공식 정의부터 살펴보겠습니다.

AWS가 정의한 Cognito User Pool은 다음과 같습니다:

Amazon Cognito User Pool은 개발자가 웹 및 모바일 애플리케이션에 회원가입 및 로그인 기능을 쉽게 추가할 수 있도록 합니다. 이는 사용자 디렉토리를 유지하는 자체 ID 제공자 역할을 합니다. 사용자 등록 및 로그인을 지원하며, 로그인한 사용자에게 ID 토큰을 발급합니다.

Cognito Federated Identities 또는 Identity Pool은 다음과 같이 정의됩니다:

Amazon Cognito Federated Identities는 개발자가 사용자에게 고유한 ID를 생성하고, 연합 ID 제공자를 통해 인증할 수 있도록 합니다. 연합 ID를 사용하면 Amazon DynamoDB, Amazon S3, Amazon API Gateway와 같은 다른 AWS 서비스에 안전하게 접근하기 위해 임시적이고 제한된 권한의 AWS 자격 증명을 얻을 수 있습니다.

안타깝게도 두 정의는 다소 모호하고 혼동스럽게 비슷합니다. 이제 이들이 실제로 무엇을 하는지 더 실용적인 설명을 해보겠습니다.

사용자 풀

새로운 웹 또는 모바일 앱을 만들 때 사용자 등록, 인증, 계정 복구를 어떻게 처리할지 고민할 수 있습니다. 이때 Cognito 사용자 풀이 유용합니다. Cognito 사용자 풀은 이러한 모든 작업을 처리하며, 개발자는 SDK를 사용해 사용자 관련 정보를 가져오기만 하면 됩니다.

Identity Pool

Cognito Identity Pool(또는 Cognito Federated Identities)은 사용자가 다양한 AWS 서비스를 사용할 수 있도록 권한을 부여하는 방법입니다. 예를 들어, 사용자가 파일을 업로드할 수 있도록 S3 버킷에 접근 권한을 부여하려는 경우, Identity Pool을 생성할 때 이를 지정할 수 있습니다. 이러한 접근 수준을 생성하기 위해 Identity Pool은 자체적인 개념의 identity(또는 사용자)를 가지고 있습니다. 이러한 identity(또는 사용자)의 소스는 Cognito User Pool 또는 Facebook, Google 등이 될 수 있습니다.

User Pool vs Identity Pool

이 두 서비스를 서로 비교하며 더 명확히 설명해 보겠습니다. 이 둘이 어떻게 함께 작동하는지 살펴보겠습니다.

Amazon Cognito User Pool vs Identity Pool 스크린샷

Cognito Identity Pool의 ID 제공자로 User Pool, 소셜 네트워크, 심지어 커스텀 인증 시스템까지 사용할 수 있다는 점에 주목하세요. Cognito Identity Pool은 모든 ID 제공자를 통합(연합)하여 사용자에게 AWS 서비스에 대한 안전한 접근 권한을 부여합니다. 사용자가 어디서 왔는지에 상관없이 말이죠.

요약하자면, Cognito User Pool은 모든 사용자를 저장하고, 이 User Pool은 Cognito Identity Pool에 연결됩니다. Cognito Identity Pool은 사용자에게 AWS 서비스에 대한 접근 권한을 제공합니다.

이제 사용자 관리 방식을 잘 이해했으니, API 테스트를 통해 백엔드를 마무리해 보겠습니다.