AWS Cognito 사용 전 알아야 할 필수지식

2023. 4. 13. 15:06개발을 파헤치다/서버 인프라

반응형

AWS에서 제공하는 인증 관련 서비스입니다. 기존에 서비스를 기획하고 개발하게 되면 백엔드 쪽에서 가장 먼저 고려하게 되는 것이 바로 사용자 인증에 관련된 부분입니다. 이는 DB 설계를 어떻게 하느냐에 따라, 서비스의 특성에 따라 달라지는데요. 
요즘에는 Framework에서도 인증 관련된 다양한 기능을 지원해줘 개발하기가 훨씬 수월하지만 여전히 인증관련된 부분은 개발 및 관리에 많은 리소스가 들게 됩니다. 이러한 문제들을 좀 더 편리하고 생산성을 높일 수 있게 해 주기 위해 등장한 서비스가 바로 AWS Cognito입니다. Cognito는 웹과 모바일 앱에 대한 인증과 권한 부여 및 사용자 관리를 제공합니다.
사용자 입장에서는 이름과 패스워드를 사용하여 직접 로그인하거나 Facebook, Google과 같은 SNS를 통한 인증(OAuth)도 제공합니다.

구성요소

Cognito는 사용자 풀(User Pools)와 자격증명 풀(Identity Pools)로 구성되어 있습니다.

사용자 풀


사용자 풀은 Cognito에 가입한 사용자에 대한 정보를 지닌 사용자 데이터베이스 역할을 합니다.
물론 DynamoDB와 연동해서 사용이 가능하죠. 즉 사용자 인증과 관련된 정보를 Cognito의 사용자 풀을 사용하고 이외의 정보를 DynamoDB를 통해 저장하는 것이 가능합니다.

Cognito를 통해 회원가입과 로그인 기능을 사용할 수 있는데 인증이 완료되면 JWT(JSON Web Token)을 리턴하게 됩니다. 이 토큰은 API Gateway에서 자격증명으로 사용되거나 다른 AWS 서비스를 사용하기 위한 자격 증명으로 교환할 수 있습니다.  
좀 더 구체적으로는 아래와 같은 기능들을 제공합니다.

  • 회원가입 및 로그인 서비스
  • 사용자 로그인을 위한 내장 커스텀 웹 UI
  • Facebook, Google, Amazon, Apple을 통한 소셜 로그인 
  • MFA(Multi Factor Authorization), SMS 및 이메일 인증번호 보내기 기능
  • AWS Lambda 트리거를 통한 로직 실행

 

자격증명 풀

자격증명 풀은 AWS 서비스에 대한 접근권한을 특정 유저에게 줄 수 있습니다. 쉽게 생각해서 관리자 계정이라고 생각할 수 있습니다. 유저가 자격증명 풀에 로그인되면, 권한에 따라 AWS 리소스에 접근할 수 있습니다.

반응형