Xác thực người dùng cuối với Amazon Cognito

Triển khai Ứng dụng trên AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Tự xây đăng nhập?

  • Ứng dụng mới cần đầy đủ đăng ký và đăng nhập
  • Nhóm định tự xây hệ thống auth từ đầu
  • Cognito đã làm việc này an toàn sẵn rồi

Chọn xác thực Amazon Cognito được quản lý thay vì tự xây đăng nhập tùy chỉnh

Triển khai Ứng dụng trên AWS

User pool và identity pool

Cognito User Pool như thư mục người dùng phát hành token ở bên trái, Identity Pool đổi token đã xác thực lấy thông tin xác thực AWS tạm thời ở giữa, dịch vụ AWS ở bên phải

  • User pool: thư mục người dùng được quản lý
  • Xử lý đăng ký, đăng nhập và phát hành token
  • Identity pool: đổi đăng nhập lấy thông tin xác thực AWS
  • Dùng kết hợp: xác thực rồi cấp quyền truy cập AWS
Triển khai Ứng dụng trên AWS

Ba loại token của Cognito

  • ID token: người dùng là ai (các claim danh tính)
  • Access token: người dùng được gọi gì
  • Refresh token: lấy token mới mà không phải đăng nhập lại
  • Cả ba đều là JWT bạn có thể giải mã và xác thực

Ba token JWT của Cognito cạnh nhau: ID token chứa claim danh tính, access token chứa scope quyền API, refresh token có thời hạn dài cho làm mới im lặng

Triển khai Ứng dụng trên AWS

Danh tính liên kết (Federated identity)

  • Liên kết danh tính (Federation): đăng nhập bằng nhà cung cấp danh tính bên ngoài
  • Mạng xã hội: Google, Facebook, Apple
  • Doanh nghiệp: nhà cung cấp SAML và OIDC
  • Cognito đứng giữa thiết lập tin cậy và phát hành token của riêng nó

Liên kết với Cognito: người dùng chọn nhà cung cấp xã hội (Google, Facebook) hoặc nhà cung cấp SAML/OIDC doanh nghiệp, Cognito xác thực đăng nhập ngoài và phát hành token chuẩn của mình

Triển khai Ứng dụng trên AWS

Cognito làm bộ ủy quyền cho API Gateway

Bộ ủy quyền Cognito của API Gateway: client gửi header Authorization kèm access token, gateway xác thực với user pool trước khi Lambda chạy, token không hợp lệ bị trả 401

  • API Gateway có thể dùng Cognito authorizer
  • Client gửi token trong Authorization header
  • API Gateway xác thực token trước khi backend chạy
  • Token không hợp lệ hoặc hết hạn được chặn ngay biên
Triển khai Ứng dụng trên AWS

Luồng phổ biến: đăng nhập đến gọi API

  • Người dùng đăng nhập vào user pool
  • Nhận ID, access và refresh token
  • Client gọi API Gateway bằng access token
  • Cognito authorizer xác thực rồi backend chạy

Luồng đăng nhập đến gọi API: người dùng đăng nhập user pool và nhận token, client gửi access token tới API Gateway, Cognito authorizer xác thực, Lambda backend thực thi

Triển khai Ứng dụng trên AWS

Lỗi Cognito thường gặp

  • Gửi ID token vào chỗ cần access token
  • Nhầm lẫn giữa user pool và identity pool
  • Cố cấp quyền truy cập AWS chỉ với user pool
  • Lưu token không an toàn trên client

Lỗi thường gặp với Cognito: gửi ID token tới API thay vì access token, nhầm user pool với identity pool, và lưu token không an toàn trên client

Triển khai Ứng dụng trên AWS

Cùng luyện tập nào!

Triển khai Ứng dụng trên AWS

Preparing Video For Download...