Câu hỏi thường gặp về Amazon Cognito

Thông tin chung

Amazon Cognito cho phép bạn bổ sung tính năng đăng ký, đăng nhập, kiểm soát truy cập người dùng và quyền truy cập dịch vụ AWS qua trung gian vào các ứng dụng web và di động của bạn chỉ trong vài phút. Đây là một dịch vụ lấy nhà phát triển làm trung tâm, tiết kiệm chi phí, cung cấp các kho lưu trữ danh tính an toàn, dựa trên đối tượng thuê và các tùy chọn liên kết có thể điều chỉnh quy mô đến hàng triệu người dùng. Amazon Cognito giúp bạn tạo trải nghiệm khách hàng mang bản sắc thương hiệu, cải thiện bảo mật và thích ứng với nhu cầu của khách hàng. Ví dụ: Dịch vụ này hỗ trợ đăng nhập với các nhà cung cấp danh tính qua mạng xã hội và đăng nhập không mật khẩu bằng mã khóa WebAuthn hoặc mật khẩu dùng một lần qua SMS và email. Amazon Cognito hỗ trợ nhiều tiêu chuẩn tuân thủ, hoạt động trên các tiêu chuẩn danh tính mở và tích hợp với một danh mục phong phú gồm tài nguyên phát triển và thư viện SDK.

Với Amazon Cognito, bạn có thể tập trung tạo trải nghiệm vượt trội khi dùng ứng dụng thay vì lo xây dựng, bảo mật và điều chỉnh quy mô giải pháp để xử lý hoạt động quản lý người dùng và xác thực.

Bạn có thể truy cập Bảng điều khiển AWS và dễ dàng bắt đầu. Nếu chưa có tài khoản Amazon Web Services thì bạn có thể tạo tài khoản khi đăng nhập vào bảng điều khiển. Sau khi tạo một thư mục người dùng riêng để quản lý người dùng hoặc một nhóm danh tính cho các danh tính liên kết, bạn có thể tích hợp ứng dụng và API của mình với OAuth và OpenID Connect (OIDC).

Xem tài nguyên bắt đầu của chúng tôi để biết thêm thông tin.

Amazon Cognito dành cho các nhà phát triển muốn thêm chức năng đồng bộ hóa và quản lý người dùng vào ứng dụng di động và web. Nhà phát triển có thể dùng Danh tính Cognito để thêm quy trình đăng ký và đăng nhập vào ứng dụng, đồng thời hỗ trợ người dùng truy cập an toàn vào tài nguyên ứng dụng. Cognito cũng hỗ trợ nhà phát triển đồng bộ hóa dữ liệu giữa các thiết bị, nền tảng và ứng dụng.

Có. Cognito cung cấp API phía máy chủ. Bạn có thể tạo giao diện tùy chỉnh riêng cho Cognito bằng cách gọi trực tiếp các API này. Nội dung mô tả API phía máy chủ có trong Hướng dẫn dành cho nhà phát triển.

SDK di động của AWS tùy chọn dành cho iOS, Android, Unity và Kindle Fire có hỗ trợ Cognito. Cognito cũng được cung cấp trong SDK AWS dành cho .NET, C++, Go, Java, JavaScript, PHP v3, Python, Ruby v3 và giao diện dòng lệnh.

Truy cập trang tài nguyên của chúng tôi để xem và tải xuống các SDK có sẵn.

Không. Cognito cung cấp API kiểm soát và dữ liệu dưới dạng dịch vụ web. Bạn có thể triển khai thư viện máy khách riêng và gọi trực tiếp API phía máy chủ.

Thêm đăng ký và đăng nhập vào ứng dụng web và di động

Đối với trình xác thực yếu tố đầu tiên, Amazon Cognito hỗ trợ tên người dùng/mật khẩu, không cần mật khẩu với OTP qua email, không cần mật khẩu với OTP qua SMS và mã khóa WebAuthn. Cognito hỗ trợ các trình xác thực nhiều yếu tố (MFA) sau: trình xác thực OTP qua email, OTP qua SMS và trình xác thực TOTP. Ngoài ra, khách hàng và đối tác có thể triển khai hỗ trợ cho các sản phẩm của bên thứ ba và trình xác thực riêng với quy trình xác thực tùy chỉnh, sử dụng phần mở rộng AWS Lambda.

Có, khi sử dụng Amazon Cognito, bạn có thể dễ dàng thêm chức năng đăng ký và đăng nhập một cách bảo mật vào ứng dụng. Người dùng có thể sử dụng email, số điện thoại hoặc tên người dùng để đăng ký và đăng nhập. Bạn cũng có thể triển khai các tính năng bảo mật nâng cao như xác minh qua email, xác minh qua số điện thoại và xác thực đa yếu tố. Cognito hỗ trợ bạn tùy chỉnh quy trình làm việc, ví dụ: bằng cách thêm logic dành riêng cho từng ứng dụng vào quy trình đăng ký người dùng để phát hiện gian lận và xác thực người dùng thông qua AWS Lambda. Để tìm hiểu thêm, hãy truy cập vào tài liệu của chúng tôi.

Thư mục người dùng riêng là thư mục người dùng dựa trên đối tượng thuê mà bạn có thể cấu hình cho ứng dụng web và ứng dụng di động. Thư mục người dùng riêng lưu trữ một cách bảo mật các thuộc tính hồ sơ của người dùng và hỗ trợ một lược đồ tùy chỉnh. Bạn có thể dùng bảng điều khiển AWS, CLI AWS hoặc SDK AWS để tạo và quản lý thư mục người dùng riêng.

Nhà phát triển có thể dùng thuộc tính hồ sơ người dùng tiêu chuẩn dựa trên OpenID Connect (ví dụ: tên người dùng, số điện thoại, địa chỉ, múi giờ, v.v.) hoặc tùy chỉnh để thêm thuộc tính người dùng dành riêng cho từng ứng dụng.

Đúng vậy, bạn có thể dùng tính năng bí danh để người dùng có thể đăng ký hoặc đăng nhập bằng địa chỉ email và mật khẩu hoặc số điện thoại và mật khẩu.

Để tìm hiểu thêm, hãy truy cập vào tài liệu của chúng tôi.

 

Có, bạn có thể thiết lập chính sách mật khẩu, chẳng hạn như các yêu cầu về độ dài của mật khẩu, độ phức tạp của ký tự và lịch sử mật khẩu khi thiết lập hoặc cấu hình thư mục người dùng riêng của mình. Ngoài ra, Amazon Cognito hỗ trợ kiểm tra thông tin chứng thực bị xâm nhập cho mỗi lần đăng ký, đăng nhập và thay đổi mật khẩu của người dùng để đảm bảo rằng người dùng không đăng nhập bằng mật khẩu đã bị xâm nhập tại một trang web khác.

Có, nhờ có Amazon Cognito, bạn có thể yêu cầu địa chỉ email và số điện thoại của người dùng phải được xác minh thì họ mới được cấp quyền truy cập vào ứng dụng. Trong quá trình đăng ký, hệ thống sẽ gửi mã xác minh đến số điện thoại hoặc địa chỉ email của người dùng. Người dùng phải nhập mã xác minh đó để hoàn tất quá trình đăng ký và phải được xác nhận.

Có, người dùng cuối của ứng dụng có thể đăng nhập bằng tính năng MFA dựa trên SMS. Khi bạn bật tính năng MFA dựa trên SMS, hệ thống sẽ nhắc người dùng nhập mật khẩu (yếu tố đầu tiên – thông tin họ biết) và mã bảo mật mà chỉ điện thoại di động của họ mới nhận được qua SMS (yếu tố thứ hai – thông tin họ có).

Có, bạn có thể tùy chỉnh quy trình đăng ký và đăng nhập bằng AWS Lambda. Ví dụ: Bạn có thể tạo hàm AWS Lambda để xác định gian lận hoặc thực hiện xác thực bổ sung đối với dữ liệu người dùng. Bạn có thể kích hoạt các hàm Lambda tùy chỉnh vào thời điểm trước khi đăng ký, sau khi xác nhận (đăng ký), trước khi xác thực, trong quá trình xác thực và sau khi xác thực. Bạn cũng có thể dùng các hàm Lambda để tùy chỉnh thư được gửi trong quá trình xác minh qua email hoặc số điện thoại và xác thực đa yếu tố.

Có, bạn có thể chọn ghi nhớ các thiết bị dùng để truy cập vào ứng dụng và liên kết các thiết bị đã ghi nhớ này với người dùng ứng dụng trong thư mục người dùng riêng Cognito. Bạn cũng có thể chọn dùng các thiết bị đã ghi nhớ để loại bỏ thử thách yếu tố thứ hai (xác thực thích ứng) cho người dùng khi bạn đã thiết lập tính năng xác thực nhiều yếu tố.

Có hai cách để di chuyển người dùng từ cơ sở dữ liệu hoặc thư mục người dùng hiện có của ứng dụng sang thư mục người dùng riêng: di chuyển tức thời (JIT) và di chuyển hàng loạt.

Amazon Cognito giúp bạn di chuyển người dùng tức thời khi người dùng đăng nhập vào ứng dụng của bạn bằng trình kích hoạt AWS Lambda tích hợp sẵn. Trình kích hoạt Lambda cho phép bạn di chuyển dữ liệu của người dùng từ một hệ thống bên ngoài mà không buộc họ phải đặt lại mật khẩu.

Một cách khác để bạn di chuyển hàng loạt người dùng là tải lên tệp CSV chứa dữ liệu hồ sơ cho tất cả người dùng ứng dụng của bạn. Bạn có thể tải lên tệp CSV thông qua bảng điều khiển Amazon Cognito, API hay CLI AWS. Vào lần đầu tiên đăng nhập, người dùng phải xác minh tài khoản và tạo mật khẩu mới bằng mã xác minh mà họ nhận được qua địa chỉ email hoặc số điện thoại.

Để tìm hiểu thêm, hãy tham khảo Nhập người dùng vào thư mục người dùng riêng.

Cho phép truy cập vào tài nguyên AWS

Có, nhóm danh tính Cognito cho phép bạn xác thực người dùng thông qua nhà cung cấp danh tính bên ngoài và cung cấp thông tin chứng thực bảo mật tạm thời để truy cập tài nguyên backend của ứng dụng trong AWS hoặc bất kỳ dịch vụ nào phía sau Cổng API Amazon. Amazon Cognito hoạt động với các nhà cung cấp danh tính bên ngoài hỗ trợ SAML hoặc OpenID Connect, các nhà cung cấp danh tính qua mạng xã hội (chẳng hạn như Facebook, Twitter, Amazon). Bạn cũng có thể tích hợp nhà cung cấp danh tính của riêng mình.

Bạn có thể sử dụng nhà cung cấp danh tính qua mạng xã hội Amazon, Facebook, Twitter, đăng nhập bằng Apple, Google, nhà cung cấp danh tính OpenID Connect (OIDC), nhà cung cấp danh tính SAML, thư mục người dùng riêng Amazon Cognito và nhà cung cấp tùy chỉnh của nhà phát triển.

Nhóm danh tính cho phép bạn tạo danh tính duy nhất cho người dùng của mình và liên kết họ một cách bảo mật với các nhà cung cấp dịch vụ AWS. Khách hàng sử dụng nhóm danh tính Amazon Cognito như một trình quản lý thông tin chứng thực để có được thông tin chứng thực AWS tạm thời, có giới hạn đặc quyền để truy cập tài nguyên AWS.

Người dùng có thể đăng nhập thông qua thư mục người dùng riêng Amazon Cognito, nhà cung cấp danh tính OIDC, nhà cung cấp danh tính SAML hoặc nhà cung cấp danh tính qua mạng xã hội và có quyền truy cập dựa trên vai trò vào các dịch vụ AWS, chẳng hạn như vùng lưu trữ Amazon S3 hoặc bản ghi Amazon DynamoDB. Nhóm danh tính không lưu trữ bất kỳ hồ sơ người dùng nào. Có thể liên kết một nhóm danh tính với một hoặc nhiều ứng dụng. Nếu bạn dùng hai nhóm danh tính khác nhau cho hai ứng dụng thì cùng một người dùng cuối sẽ có một mã nhận dạng duy nhất khác nhau trong mỗi Nhóm danh tính.

Ứng dụng di động dùng SDK của nhà cung cấp để xác thực với Nhà cung cấp danh tính (IdP). Sau khi người dùng cuối được xác thực với IdP, token OpenID Connect hoặc lệnh xác nhận SAML trả về từ IdP sẽ được ứng dụng của bạn chuyển đến nhóm danh tính Cognito. Nhóm danh tính này trả về ID Cognito mới cho người dùng và một tập hợp thông tin chứng thực AWS tạm thời, có giới hạn đặc quyền.

Nhóm danh tính Cognito có thể tích hợp với hệ thống xác thực hiện tại của bạn. Với một lệnh gọi API đơn giản, bạn có thể truy xuất ID Cognito cho người dùng cuối dựa trên mã nhận dạng duy nhất của bạn cho người dùng. Sau khi truy xuất ID Cognito và Token OpenID, bạn có thể dùng SDK máy khách của nhóm danh tính Cognito để truy cập vào tài nguyên AWS và đồng bộ hóa dữ liệu người dùng.

Nhóm danh tính Cognito chỉ định cho người dùng một tập hợp thông tin chứng thực đặc quyền tạm thời, có giới hạn để truy cập vào tài nguyên AWS nên bạn không phải sử dụng thông tin chứng thực tài khoản AWS của mình. Quyền cho mỗi người dùng được kiểm soát thông qua các vai trò IAM mà bạn tạo trong AWS. Bạn có thể đặt ra quy tắc để chọn vai trò IAM cho từng người dùng hoặc nếu bạn đang dùng nhóm trong thư mục người dùng riêng Cognito, bạn có thể chỉ định vai trò IAM dựa trên nhóm. Nhóm danh tính Cognito cũng cho phép bạn xác định một vai trò IAM riêng biệt với quyền hạn chế dành cho người dùng khách chưa xác thực. Ngoài ra, bạn có thể dùng mã nhận dạng duy nhất mà Cognito tạo cho người dùng để kiểm soát quyền truy cập vào một số tài nguyên cụ thể. Ví dụ: bạn có thể tạo chính sách cho vùng lưu trữ S3 mà chỉ cho phép mỗi người dùng truy cập vào thư mục của riêng họ trong vùng lưu trữ.

Không, ứng dụng của bạn giao tiếp trực tiếp với nhà cung cấp danh tính công cộng được hỗ trợ (Amazon, Facebook, Twitter, đăng nhập bằng Apple, Google, SAML hoặc nhà cung cấp tuân thủ Open ID Connect) để xác thực người dùng. Danh tính Cognito không nhận hoặc lưu trữ thông tin chứng thực của người dùng. Danh tính Cognito sử dụng mã thông báo từ nhà cung cấp danh tính để nhận mã nhận dạng duy nhất cho người dùng, sau đó chia nhỏ mã đó bằng hàm băm một chiều để có thể nhận dạng chính người dùng đó trong tương lai mà không cần lưu trữ mã nhận dạng thực tế của người dùng.

Không. Danh tính Cognito không nhận bất kỳ thông tin mật nào (như địa chỉ email, danh sách bạn bè, v.v.) từ các nhà cung cấp danh tính.

Nhóm danh tính Cognito hỗ trợ quá trình tạo và cấp token cho cả người dùng chưa xác thực lẫn người dùng đã xác thực. Nhờ đó, bạn không cần thêm màn hình đăng nhập trong ứng dụng mà vẫn có thể sử dụng thông tin chứng thực đặc quyền tạm thời, có giới hạn để truy cập vào tài nguyên AWS.

Không. Danh tính Cognito hỗ trợ đăng nhập thông qua Amazon, Facebook, Twitter, Digits và Google, đồng thời hỗ trợ cả người dùng chưa xác thực. Với Danh tính Cognito, bạn có thể hỗ trợ xác thực liên kết, kho đồng bộ hóa dữ liệu hồ sơ và phân phối mã thông báo truy cập AWS mà không cần ghi mã backend.

Người dùng chưa xác thực là người dùng chưa xác thực bằng nhà cung cấp danh tính, thay vào đó, họ truy cập vào ứng dụng của bạn với tư cách khách. Bạn có thể xác định một vai trò IAM riêng cho những người dùng này để cấp quyền truy cập có giới hạn vào tài nguyên backend.

Có, nhóm danh tính Cognito hỗ trợ các danh tính riêng biệt trên một thiết bị duy nhất, chẳng hạn như iPad của gia đình. Từng danh tính được xử lý riêng. Bạn có toàn quyền kiểm soát cách ứng dụng đăng nhập và đăng xuất người dùng cũng như cách lưu trữ dữ liệu ứng dụng cục bộ và từ xa.

Bạn có thể lập trình để tạo tập dữ liệu liên kết với nhóm danh tính Cognito và bắt đầu lưu dữ liệu dưới dạng cặp khóa/giá trị. Dữ liệu được lưu trữ ở cả cục bộ trên thiết bị lẫn trong kho đồng bộ hóa Cognito. Ngoài ra, Cognito còn có thể đồng bộ hóa dữ liệu này trên tất cả các thiết bị của người dùng cuối.

Số lượng danh tính trong bảng điều khiển nhóm danh tính Cognito cho bạn biết số lượng danh tính được tạo thông qua API nhóm danh tính Cognito. Với Danh tính đã xác thực (những người đăng nhập bằng nhà cung cấp dịch vụ đăng nhập như Facebook hoặc nhà cung cấp OpenID Connect), mỗi lệnh gọi đến API GetId của nhóm danh tính Cognito sẽ chỉ tạo một danh tính duy nhất cho mỗi người dùng. Tuy nhiên, với danh tính chưa xác thực, mỗi khi máy khách trong ứng dụng gọi API getID, một danh tính mới sẽ được tạo. Do đó, nếu ứng dụng của bạn nhiều lần gọi GetId cho danh tính chưa xác thực cho một người dùng duy nhất, dữ liệu sẽ hiển thị là một người dùng có nhiều danh tính. Vì vậy, bạn cần lưu phản hồi từ GetId vào bộ nhớ đệm khi sử dụng danh tính chưa xác thực và không gọi GetId nhiều lần trên mỗi người dùng.

SDK di động cung cấp logic để tự động lưu dữ liệu của nhóm danh tính Cognito vào bộ nhớ đệm nên bạn không phải lo lắng về điều này. Nếu bạn đang tìm một giải pháp phân tích hoàn chỉnh cho ứng dụng của mình, bao gồm cả khả năng theo dõi người dùng duy nhất, vui lòng xem Amazon Mobile Analytics.

Định giá

Để biết mức giá thư mục người dùng riêng Amazon Cognito, vui lòng xem trang định giá Amazon Cognito.

Để tính toán chi phí ước tính, hãy sử dụng Công cụ tính giá AWS

 

Bạn trả tiền cho thư mục người dùng riêng Amazon Cognito dựa trên những người dùng hoạt động hàng tháng (MAU) của bạn. Người dùng được tính là MAU nếu trong một tháng dương lịch, ứng dụng của bạn tạo một hoạt động định danh cho người dùng đó, như tạo hoặc cập nhật quản trị, đăng ký, đăng nhập, đăng xuất, làm mới token, đổi mật khẩu, cập nhật thuộc tính tài khoản người dùng hoặc truy vấn thuộc tính về người dùng (API AdminGetUser). Bạn không phải mất phí cho các phiên sau đó hoặc cho người dùng không hoạt động trong tháng dương lịch đó. Thông thường, tổng số người dùng cũng như số lượt hoạt động sẽ lớn hơn đáng kể so với tổng số MAU của bạn.

Để biết giá dịch vụ Đồng bộ hóa của Amazon Cognito, vui lòng xem trang giá của Amazon Cognito.

Chúng tôi tính phí riêng việc dùng tin nhắn SMS để xác minh số điện thoại, gửi mã do quên, đặt lại mật khẩu hoặc xác thực đa yếu tố. Hãy xem trang Định giá SMS trên toàn thế giới để biết thêm thông tin.

Hoạt động đồng bộ hóa là khi bạn gọi phương thức synchronize() bằng SDK di động của AWS. Nếu bạn trực tiếp gọi API máy chủ thì hoạt động đồng bộ hóa sẽ bắt đầu khi mã thông báo phiên đồng bộ hóa mới được tạo ra và hoàn thành bằng việc mã thông báo phiên được ghi thành công hoặc hết thời gian chờ. Cho dù bạn dùng phương thức SDK synchronize() hay gọi trực tiếp API máy chủ thì hoạt động đồng bộ hóa đều được tính cùng một mức phí.

Có, SKU thư mục người dùng riêng và SKU Essentials của Amazon Cognito miễn phí cho 10.000 MAU đầu tiên. Tài khoản khách hàng có thư mục người dùng riêng Amazon Cognito đang hoạt động trước ngày 21 tháng 11 năm 2024 sẽ đủ điều kiện hưởng bậc miễn phí 50.000 MAU.

Là một phần trong Bậc miễn phí của AWS, khách hàng của AWS đủ điều kiện sẽ được miễn phí 10 GB kho đồng bộ đám mây và 1.000.000 thao tác đồng bộ mỗi tháng cho 12 tháng đầu tiên.

Việc sử dụng nhóm danh tính Amazon Cognito để xác thực người dùng và tạo mã nhận diện duy nhất luôn miễn phí

Chúng tôi không tính thêm phí khi bạn sử dụng sự kiện Cognito để kích hoạt các hàm Lambda, nhưng sẽ áp dụng mức phí thông thường khi bạn sử dụng AWS Lambda và các dịch vụ AWS khác trong khi hàm Lambda đang thực thi.

Vui lòng xem trang định giá AWS Lambda để biết chi tiết.

 

Không. Bạn là người quyết định khi nào cần gọi phương thức synchronize(). Mỗi lần ghi hoặc đọc từ thiết bị đều đến cửa hàng SQLite cục bộ. Bằng cách này, bạn hoàn toàn kiểm soát chi phí bạn phải trả.

Cognito sử dụng Amazon SNS để gửi thông báo đẩy im lặng. Chúng tôi không tính thêm phí khi bạn sử dụng Cognito để đồng bộ hóa đẩy, nhưng sẽ áp dụng mức phí thông thường của Amazon SNS đối với các thông báo được gửi đến thiết bị.