Amazon Cognito

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ạ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)
- User đã xác thực (
- 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)
| Cognito | IAM |
|---|---|
| Hàng trăm/thậm chí hàng ngàn user | Thường dùng cho hệ thống nội bộ/admin |
| Dành cho mobile/web user | Dành cho service hoặc user nội bộ |
| Hỗ trợ xác thực SAML | Cũ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?