AWS Cognito에 대해서 간단하게 알아 봅시다.

AWS Cognito는 User Pool과 Federated Identities 서비스를 제공한다. 이 글에서는 AWS Cognito의 개념을 이해하고, 어떻게 활용하는 것이 좋을지에 대해 간단하게 정리해 본다.

우선 AWS Cognito는 무엇을까?

AWS Cognito는 모바일과 앱 앱에 사용자 가입 및 로그인 기능을 손쉽게 제공할 수 있는 기능을 제공한다. Cognito에서는 Facebook, Twitter 또는 Amazon과 같은 소셜 자격 증명 공급자, SAML 자격 증명 솔루션 또는 자체 자격 증명 시스템을 이용하여 사용자를 인증할 수 있는 옵션을 제공한다. 

따라서 사용자 관리, 인증 및 디바이스 간 동기화를 처리하는 솔루션의 구축, 보안 및 확장을 AWS Cognito에서 제공 받음으로써 서비스 구현에 집중할 수 있게 된다.

우선 AWS Cognito에서 제공하는 두 가지 기능을 정리해보자. 
  • User Pool
    • Amazon Cognito의 User Pool은 개발자가 웹 및 모바일 애플리케이션에 등록 및 로그인 기능을 쉽게 추가 할 수 있게 한다. 또한 사용자 디렉토리를 유지 관리하는 고유 한 ID 공급자 역할을 한다. 사용자 로그인 및 로그인을 지원하고 로그인 한 사용자의 신원 토큰을 프로비저닝한다.
  • Federated Identities(또는 Identity Pool, ID Pool)
    • Cognito Federated Identities를 통해 개발자는 사용자에 대한 고유 ID를 만들고 연합 ID 공급자로 인증할 수 있다. 제휴 ID를 사용하면 임시, 제한된 권한의 AWS 자격증을 획득하여 Amazon DynamoDB, Amazon S3 및 Amazon API Gateway와 같은 다른 AWS 서비스에 안전하게 액세스 할 수 있다.
Amazon Cognito 개요


위에 정의들은 AWS Cognito 웹페이지에서 누구나 볼 수 있을 것 같은데, 문제는 뭔가 서비스를 만들려고 하면 명확하게 이해되지 않을 수 있다. 

그래서 알기 쉽게 정리해 봤다.

User Pool(사용자 풀)

새로운 웹 또는 모바일 앱을 만들고 사용자 등록, 인증 및 계정 복구를 처리하는 방법에 대해 생각해 보았다고 가정해 보자. 이것은 Cognito User Pool이 들어오는 곳이다. Cognito User Pool은 이 모든 것을 처리한다. 사용자 관련 정보를 검색하기 위해서는 개발자는 SDK를 통해서 사용가능하다.

Federated Identities(Identity Pool,  연동자격증명)

이것은 사용자가 다양한 AWS 서비스를 사용할 수있는 권한을 부여하는 방법이다. 만일 사용자가 파일을 업로드 할 수 있도록 S3 버킷에 액세스가 필요하다면, Federated Identities을 통해 이를 지정할 수 있습니다. 그리고 이러한 수준의 액세스를 생성하기 위해 Federated Identities에는 고유 한 ID (또는 사용자) 개념이 있다. 이러한 ID (또는 사용자)의 출처는 Cognito User Pool 또는 Facebook 또는 Google이 될 수 있다.

User Pool vs. Federated Identities 

아래 그림을 보면 User Pool과 Federated Identities과의 관계를 명확하게 확인할 수 있다. AWS의 리소스에 접근 권한을 부여하기 위해서는 Cognito의 Federated Identities로 관리해야 한다. 이때 접근할 수 있는 주체는 Cognito의 User Pool에서 관리되고 있는 사용자 뿐만 아니라 Facebook, Google, Github 등 ID공급업체들의 사용자에게도 가입없이 부여할 수 있다.
Amazon Cognito User Pool 대 Identity Pool 스크린 샷



댓글

이 블로그의 인기 게시물

macOS가 갑자기 부팅이 되지 않을 경우 데이터 복구 또는 백업 방법

C++로 프로그래밍할 때 인자 또는 리턴 값으로 std::vector 등 STL 데이터 타입 처리하는 좋은 방법

Git 저장소를 병합하는 방법(How to merge repositories in Git)