2016-01-18 25 views
5

Tôi đã tìm cách sử dụng các dịch vụ AWS khác nhau để xử lý cơ sở hạ tầng cho dự án lớn tiếp theo của chúng tôi. Chúng tôi bắt đầu xem xét các container docker trên các trường hợp EC2, nhưng sau khi nhìn vào AWS Lambda một chút nữa - nó có vẻ giống như một con đường đáng để khám phá.Xác thực người dùng (Đăng ký & Đăng nhập) trên AWS với Lambda, Cognito hoặc IAM

Sử dụng mô hình AWS Lambda, chúng tôi chỉ đơn giản sử dụng hàm Lambda làm keo hợp lý để giữ dữ liệu và sự kiện của chúng tôi (từ các dịch vụ AWS khác) với nhau. Ví dụ, nếu người dùng sản phẩm của chúng tôi tạo ra một kỷ lục mới, AWS Lambda có thể được kích hoạt trên sự kiện đó và chúng tôi có thể gọi hàm lambda để thêm bản ghi đó vào AWS Cloudsearch, do đó giữ cho tìm kiếm của chúng tôi được cập nhật.

Tôi hơi không chắc chắn khi nói đến quản lý người dùng, xác thực và như vậy trong loại mô hình này. Tôi đã đọc một số tài liệu về IAM và Cognito trong việc tìm kiếm một dịch vụ AWS để giảm tải người dùng đăng ký, đăng nhập, đăng xuất, quên mật khẩu, v.v. Nó không có vẻ như đó là những gì các dịch vụ này thực sự cho. IAM là quản lý danh tính cho tổ chức (không phải là cơ sở người dùng) và cognito tập trung hơn vào việc đồng bộ hóa thông tin nhận dạng trên nhiều thiết bị hoặc ứng dụng (xác thực bài đăng).

Tôi hiện đang tự hỏi liệu những gì tôi nên làm là viết đăng ký, đăng nhập, quên mật khẩu vv mã như chức năng lambda bản thân mình? hoặc là có một số giải pháp hoặc tập hợp các giải pháp trong ngăn xếp AWS sẽ làm xước ngứa đặc biệt này?

Trả lời

7

Bạn có thể sử dụng your own authentication system với Cognito và sau đó sử dụng AMI để ủy quyền, ngay cả đối với cơ sở người dùng của bạn.

  • Khi xác thực người dùng (có thể trong hàm Lambda được gọi qua cổng API), bạn sẽ retrieve or create in Cognito an identity ID associated to the user sử dụng GetOpenIdTokenForDeveloperIdentity.
  • Sau đó, bạn sẽ có mã thông báo OpenID của Cognito mà bạn có thể cung cấp cho người dùng được xác thực của mình.
  • Người dùng có thể sử dụng mã thông báo này để nhận temporary AWS credentials được liên kết với vai trò IAM. Vì vậy, bạn có thể cấp quyền truy cập vào một số tài nguyên AWS cho người dùng được xác thực: GetCredentialsForIdentity.
  • Khi người sử dụng gọi các nguồn lực AWS sử dụng các thông tin, bạn có thể truy cập để nhận dạng Cognito mình thông qua ngữ cảnh (ví dụ với Lambda, API Gateway hoặc S3)
  • Cuối cùng, bạn có thể find the user associated to this Cognito identity trong hệ thống của bạn sử dụng LookupDeveloperIdentity.

Kiểm tra authentication flowsome more examples

Các vấn đề liên quan