Amazon Cognito

3 phút đọcSeries: NoteBook: AWS Certified Solutions Architect Associate SAA-C031 lượt xem

Amazon Cognito

  • Cung cấp danh tính cho người dùng để họ có thể tương tác với ứng dụng web hoặc mobile của bạn.

Cognito User Pools – (Nhóm người dùng)

  • Cung cấp tính năng đăng nhập cho người dùng ứng dụng.
  • Có thể tích hợp với:
    • API Gateway và Application Load Balancer (ALB)
Tích hợp với API Gateway
Tích hợp với ALB
  • Tạo một database người dùng dạng serverless cho ứng dụng web và mobile của bạn
    → Không cần tự host backend để quản lý user.
  • Đăng nhập đơn giản: sử dụng tên người dùng (hoặc email) kết hợp với mật khẩu.
  • Hỗ trợ reset mật khẩu
  • Xác thực email & số điện thoại (Email & Phone Number Verification)
  • Xác thực đa yếu tố (MFA)
    → Có thể dùng SMS hoặc app OTP (Google Authenticator, Authy…).
  • Định danh liên kết (Federated Identities):
    → Hỗ trợ người dùng đăng nhập qua Facebook, Google, hoặc qua SAML (Single Sign-On

👉 Thường dùng cho authentication (xác thực) người dùng ứng dụng.

Cognito Identity Pools (Federated Identity) – (Nhóm định danh liên kết)

  • Cung cấp danh tính cho "người dùng" để họ có thể nhận được AWS credentials tạm thời
    → Credential này dùng để gọi các dịch vụ AWS một cách bảo mật.
  • Nguồn người dùng có thể là:
    • Cognito User Pools
    • Các bên xác thực thứ ba (3rd party) như Google, Facebook, Apple...
  • Người dùng sau đó có thể truy cập trực tiếp dịch vụ AWS hoặc thông qua API Gateway
  • Chính sách IAM áp dụng cho credentials được định nghĩa trong Cognito
    → Tức là bạn có thể giới hạn quyền truy cập vào S3, DynamoDB, v.v.
  • Chính sách này có thể tuỳ chỉnh dựa vào user_id
    → Cho phép kiểm soát chi tiết theo từng người dùng cụ thể (fine-grained access control)
  • Có thể cấu hình role IAM mặc định cho:
    • User đã xác thực (authenticated)
    • User chưa xác thực (guest users)
  • Có thể tích hợp với User Pools làm identity provider.

👉 Dùng để ủy quyền (authorization) truy cập tài nguyên AWS.

1. Login & Get Token
  • Client App (Web/Mobile) thực hiện đăng nhập bằng provider bên ngoài (bên phải hình):
    • Google, Facebook → (Social Identity Provider)
    • SAML 2.0 (ví dụ: ADFS, Azure AD...)
    • OpenID Connect (ví dụ: Auth0)
    • Cognito User Pool (nội bộ AWS quản lý)
      → Sau khi xác thực thành công, app sẽ nhận về 1 token (ID token / access token) từ nhà cung cấp đó.
2. Exchange token for temporary AWS credentials
  • App gọi tới Cognito Identity Pool, kèm theo token vừa nhận để yêu cầu cấp IAM credentials tạm thời.
  • Cognito Identity Pool sẽ:
    • Validate token với bên xác thực tương ứng.
    • Mapping token đó với 1 IAM Role tương ứng trong cấu hình Identity Pool.
3. Nhận về IAM credentials tạm thời
  • Identity Pool trả về các temporary credentials (AccessKeyId, SecretAccessKey, SessionToken) dùng được cho AWS SDK.
4. Client dùng IAM credentials để gọi trực tiếp AWS Services
  • Ví dụ:
    • Upload file lên S3 private bucket
    • Đọc/ghi dữ liệu vào DynamoDB

Các request này đi thẳng tới AWS backend, không cần trung gian backend server.

Cognito vs IAM (so sánh nhanh)

CognitoIAM
Hàng trăm/thậm chí hàng ngàn userThường dùng cho hệ thống nội bộ/admin
Dành cho mobile/web userDành cho service hoặc user nội bộ
Hỗ trợ xác thực SAMLCũng hỗ trợ SAML, nhưng không tối ưu cho user bên ngoài
Bạn thấy bài này thế nào?