Skip to content

Amazon Cognito là gì

Amazon Cognito là dịch vụ xác thực (Authentication)phân quyền (Authorization) do AWS cung cấp, giúp bạn dễ dàng thêm tính năng đăng nhập, quản lý người dùng và quyền truy cập vào ứng dụng Web hoặc Mobile.

Cognito thường được sử dụng cùng với API GatewayLambda trong các kiến trúc serverless.

Thành phần chính

User Pool là gì

  • Cơ sở dữ liệu quản lý thông tin người dùng.
  • Cung cấp tính năng Signup / Signin.
  • Hỗ trợ xác thực đa yếu tố (MFA) và email/phone verification.
  • Tích hợp với các nhà cung cấp đăng nhập xã hội (Google, Facebook, Apple, v.v.).

Identity Pool (Federated Identity) là gì

  • Cấp phát AWS temporary credentials để người dùng truy cập các dịch vụ AWS.
  • Hỗ trợ federated identities (sử dụng identity từ Google, Facebook, SAML, v.v.).
  • Thường dùng khi cần cho phép người dùng tải trực tiếp dữ liệu từ S3 hoặc truy vấn DynamoDB.

Quy trình hoạt động cơ bản

  1. Người dùng đăng nhập vào ứng dụng qua User Pool.
  2. Cognito trả về JWT token cho client.
  3. Token này được sử dụng để truy cập API Gateway hoặc backend.
  4. Nếu dùng Identity Pool, Cognito sẽ cấp temporary AWS credentials cho user.

Tích hợp với các dịch vụ khác

  • API Gateway: sử dụng Cognito User Pool làm authorizer cho API.
  • Lambda: xử lý logic xác thực tuỳ chỉnh hoặc các trigger như PreSignUp, PostConfirmation.
  • S3, DynamoDB: cấp quyền trực tiếp cho user thông qua Identity Pool.

Ưu điểm

  • Quản lý người dùng dễ dàng, không cần tự xây dựng hệ thống auth.
  • Hỗ trợ nhiều cơ chế đăng nhập (username/password, social login, SAML).
  • Tích hợp sẵn với API Gateway, Lambda và IAM.
  • Có sẵn MFA, password policies, account recovery.

Hạn chế

  • Tùy biến giao diện UI (hosted UI) còn hạn chế.
  • Quản lý phức tạp nếu kết hợp nhiều identity providers.
  • 💰Pricing dựa trên số lượng active users có thể tăng cao với ứng dụng lớn.

Use cases

  • Web/mobile app authentication: cung cấp tính năng signup, login, reset password.
  • API security: bảo vệ API Gateway bằng Cognito authorizer.
  • Guest access: cho phép người dùng chưa đăng nhập vẫn truy cập S3/DynamoDB với quyền hạn chế.
  • Single Sign-On (SSO): tích hợp ứng dụng với các nhà cung cấp danh tính bên ngoài.

So sánh User Pool với Identity Pool

User PoolIdentity Pool
Vai trò chínhXác thực (Authentication)Uỷ quyền (Authorization → AWS services)
Quản lý userCó (sign up, sign in, MFA, social…)Không quản lý user, chỉ mapping credentials
OutputJWT TokensAWS Temporary Credentials (STS)
Dùng khiCần login/logout, quản lý userUser cần truy cập AWS services (S3, DynamoDB…)

Ví dụ thực tế: Application của bạn có chức năng upload ảnh lên S3

Nếu dùng User Pool:

  1. User đăng nhập → Cognito User Pool xác thực → trả JWT token.
  2. JWT token dùng để gọi API Gateway → Lambda → (Lambda dùng IAM role truy cập S3).

Nếu dùng Identity Pool:

  1. User đăng nhập → Cognito User Pool xác thực.
  2. User Pool token được gửi qua Identity Pool.
  3. Identity Pool cấp temporary AWS credentials.
  4. User dùng credentials đó upload ảnh trực tiếp lên S3 (không cần đi qua Lambda).
⚠️

Cách nhớ nhanh:

  • User Pool = Ai là bạn? (Authentication)
  • Identity Pool = Bạn được phép làm gì trên AWS? (Authorization)