Tìm hiểu cách tích hợp khoá truy cập vào dịch vụ của bạn.
Cấu tạo của hệ thống khoá truy cập
Hệ thống khoá truy cập bao gồm một số thành phần:
- Bên điều hành: Trong ngữ cảnh khoá truy cập, bên dựa trên (gọi tắt là RP) sẽ xử lý việc cấp và xác thực khoá truy cập. RP phải vận hành ứng dụng (một trang web hoặc ứng dụng tạo mã xác thực hoặc xác thực bằng mã xác thực) và máy chủ để đăng ký, lưu trữ và xác minh thông tin xác thực do khoá truy cập tạo ra trên ứng dụng. Ứng dụng khoá truy cập dành cho thiết bị di động phải được liên kết với một miền máy chủ RP bằng cơ chế liên kết do hệ điều hành cung cấp, chẳng hạn như Đường liên kết đến tài sản kỹ thuật số.
- Authenticator: Một thiết bị điện toán, chẳng hạn như điện thoại di động, máy tính bảng, máy tính xách tay hoặc máy tính để bàn có thể tạo và xác minh khoá truy cập bằng tính năng khoá màn hình do hệ điều hành cung cấp.
- Trình quản lý mật khẩu: Phần mềm được cài đặt trên thiết bị của người dùng cuối giúp phân phát, lưu trữ và đồng bộ hoá mã xác thực, chẳng hạn như Trình quản lý mật khẩu của Google.
Quy trình đăng ký
Sử dụng API WebAuthn trên trang web hoặc thư viện Trình quản lý thông tin xác thực trong ứng dụng Android để tạo và đăng ký khoá truy cập mới.
Để tạo khoá truy cập mới, bạn cần cung cấp một số thành phần chính sau đây:
- Mã RP: Cung cấp mã nhận dạng của bên phụ thuộc ở dạng một miền web.
- Thông tin người dùng: Mã nhận dạng, tên người dùng và tên hiển thị của người dùng.
- Thông tin xác thực cần loại trừ: Thông tin về các khoá truy cập đã lưu trữ trước đây để ngăn việc đăng ký trùng lặp.
- Loại khoá truy cập: Liệu sử dụng chính thiết bị ("trình xác thực nền tảng") làm trình xác thực hay khoá bảo mật có thể tháo rời ("trình xác thực nhiều nền tảng / chuyển vùng"). Ngoài ra, phương thức gọi có thể chỉ định xem có cho phép phát hiện thông tin xác thực hay không để người dùng có thể chọn một tài khoản dùng để đăng nhập.
Sau khi RP yêu cầu tạo khoá truy cập và người dùng xác minh khoá đó bằng phương thức mở khoá màn hình, khoá truy cập mới sẽ được tạo và thông tin xác thực khoá công khai được trả về. Gửi tệp đó đến máy chủ và lưu trữ mã xác thực cũng như khoá công khai để xác thực trong tương lai.
Tìm hiểu chi tiết cách tạo và đăng ký khoá truy cập:
- Trên web: Tạo khoá truy cập cho các lần đăng nhập không cần mật khẩu
- Trên Android: Đưa tính năng xác thực liền mạch vào ứng dụng bằng khoá truy cập thông qua API Trình quản lý thông tin xác thực
Quy trình xác thực
Sử dụng API WebAuthn trên trang web hoặc thư viện Trình quản lý thông tin xác thực trên ứng dụng Android để xác thực bằng khoá truy cập đã đăng ký.
Để xác thực bằng khoá truy cập, bạn cần cung cấp một số thành phần chính sau đây:
- Mã RP: Cung cấp mã nhận dạng của bên phụ thuộc ở dạng một miền web.
- Thử thách: Thử thách do máy chủ tạo nhằm ngăn chặn các cuộc tấn công phát lại.
Sau khi RP yêu cầu xác thực bằng khoá truy cập và người dùng xác minh bằng tính năng mở khoá màn hình, thông tin xác thực khoá công khai sẽ được trả về. Gửi tệp đó đến máy chủ và xác minh chữ ký bằng khoá công khai đã lưu trữ.
Tìm hiểu chi tiết cách xác thực bằng khoá truy cập:
- Trên web: Đăng nhập bằng khoá truy cập thông qua tính năng tự động điền biểu mẫu
- Trên Android: Đưa tính năng xác thực liền mạch vào ứng dụng bằng khoá truy cập thông qua API Trình quản lý thông tin xác thực
Tích hợp phía máy chủ
Khi tạo khoá truy cập, máy chủ cần cung cấp các tham số chính như thách thức, thông tin người dùng, mã thông tin xác thực cần loại trừ, v.v. Sau đó, trình kiểm tra này sẽ xác minh thông tin xác thực về khoá công khai đã tạo được gửi từ ứng dụng và lưu trữ khoá công khai trong cơ sở dữ liệu. Để xác thực bằng khoá truy cập, máy chủ cần xác thực thông tin xác thực một cách cẩn thận và xác minh chữ ký để cho phép người dùng đăng nhập.
Tuy nhiên, việc tự xây dựng máy chủ khoá truy cập sẽ không hiệu quả về thời gian và có thể gây ra lỗi có khả năng dẫn đến sự cố bảo mật nghiêm trọng. Bạn nên sử dụng một trong các thư viện nguồn mở có sẵn hoặc một giải pháp có thể hỗ trợ tăng tốc độ tích hợp khoá truy cập.
Để tìm danh sách các thư viện nguồn mở, hãy xem phần Thư viện của Passkeys.dev hoặc danh sách các thư viện WebAuthn lấy nguồn cộng đồng. Để tìm giải pháp, FIDO Alliance có một danh sách các máy chủ FIDO2 được chứng nhận.
Cơ chế xác thực hiện có (cũ)
Khi bạn hỗ trợ khoá truy cập trên dịch vụ hiện có, quá trình chuyển đổi từ cơ chế xác thực cũ như mật khẩu sang khoá truy cập sẽ không xảy ra trong một ngày. Chúng tôi biết bạn có xu hướng loại bỏ phương thức xác thực yếu hơn càng sớm càng tốt, nhưng điều đó có thể khiến người dùng nhầm lẫn hoặc bỏ lỡ một số người dùng. Bạn nên tạm thời giữ lại phương thức xác thực hiện có.
Sau đây là một số lý do:
- Có người dùng trong môi trường không tương thích với khoá truy cập: Tính năng hỗ trợ khoá truy cập đang mở rộng rộng rãi trên nhiều hệ điều hành và trình duyệt, nhưng những người sử dụng phiên bản cũ chưa thể sử dụng khoá truy cập.
- Hệ sinh thái khoá truy cập chưa hoàn thiện: Hệ sinh thái khoá truy cập đang phát triển. Thông tin chi tiết về trải nghiệm người dùng và khả năng tương thích kỹ thuật giữa nhiều môi trường có thể được cải thiện.
- Người dùng có thể chưa sẵn sàng sử dụng khoá truy cập: Có những người sẽ do dự khi chuyển sang những nội dung mới. Khi hệ sinh thái khoá truy cập phát triển, trẻ sẽ hiểu được cách hoạt động của khoá truy cập và lý do khoá truy cập này hữu ích.
Xem lại cơ chế xác thực hiện có của bạn
Mặc dù khoá truy cập giúp quá trình xác thực trở nên đơn giản và an toàn hơn, nhưng việc giữ lại cơ chế cũ lại giống như một lỗ hổng. Bạn nên xem lại và cải thiện các cơ chế xác thực hiện tại.
Mật khẩu
Tạo mật khẩu mạnh và quản lý mật khẩu cho từng trang web là nhiệm vụ khó khăn đối với người dùng. Bạn nên sử dụng trình quản lý mật khẩu tích hợp sẵn trong hệ thống hoặc một trình quản lý mật khẩu độc lập. Bằng cách điều chỉnh một chút đối với biểu mẫu đăng nhập, các trang web và ứng dụng có thể tạo ra sự khác biệt lớn về tính bảo mật và trải nghiệm đăng nhập. Hãy xem cách bạn có thể thực hiện các thay đổi đó:
- Các phương pháp hay nhất về biểu mẫu đăng nhập (Web)
- Các phương pháp hay nhất về biểu mẫu đăng ký (Web)
- Đăng nhập cho người dùng bằng Trình quản lý thông tin xác thực (Android)
Xác thực hai yếu tố
Mặc dù việc sử dụng trình quản lý mật khẩu giúp người dùng xử lý mật khẩu, nhưng không phải tất cả người dùng đều sử dụng. Việc yêu cầu một thông tin xác thực bổ sung có tên là mật khẩu một lần (OTP) là một phương pháp phổ biến để bảo vệ những người dùng như vậy. OTP thường được cung cấp qua email, tin nhắn SMS hoặc ứng dụng xác thực, chẳng hạn như Google Authenticator. Vì OTP thường là một văn bản ngắn được tạo tự động và chỉ hợp lệ trong một khoảng thời gian giới hạn, nên sẽ làm giảm xác suất bị chiếm đoạt tài khoản. Các phương thức này không mạnh mẽ như khoá truy cập, nhưng hiệu quả hơn nhiều so với việc để người dùng chỉ sử dụng một mật khẩu.
Nếu bạn chọn SMS làm cách thức phân phối OTP, hãy xem các phương pháp hay nhất sau đây để đơn giản hoá trải nghiệm người dùng để nhập OTP.
- Các phương pháp hay nhất về biểu mẫu OTP qua tin nhắn SMS (Web)
- Xác minh tự động qua SMS bằng SMS Retriever API (Android)
Liên kết danh tính
Liên kết danh tính là một tuỳ chọn khác cho phép người dùng đăng nhập an toàn và dễ dàng. Với liên kết danh tính, các trang web và ứng dụng có thể cho phép người dùng đăng nhập bằng danh tính của người dùng từ nhà cung cấp danh tính bên thứ ba. Ví dụ: tính năng Đăng nhập bằng Google mang lại lượt chuyển đổi tuyệt vời cho nhà phát triển. Người dùng thấy rằng việc xác thực dựa trên mật khẩu sẽ dễ dàng và thuận tiện hơn. Liên kết danh tính sẽ bổ sung cho khoá truy cập. Bạn nên đăng ký vì trang web hoặc ứng dụng có thể lấy thông tin hồ sơ cơ bản của người dùng chỉ trong một bước duy nhất, còn khoá truy cập là lựa chọn tuyệt vời để đơn giản hoá quá trình xác thực lại.
Xin lưu ý rằng sau khi Chrome loại bỏ cookie của bên thứ ba vào năm 2024, một số hệ thống liên kết danh tính có thể bị ảnh hưởng tuỳ thuộc vào cách các hệ thống đó được xây dựng. Để giảm thiểu tác động này, chúng tôi đang phát triển một API trình duyệt mới có tên là Federated Credential Management API (API Quản lý thông tin xác thực liên kết). Nếu bạn chạy một nhà cung cấp danh tính, hãy tham khảo thông tin chi tiết và xem liệu bạn có cần sử dụng FedCM hay không.
- API Quản lý thông tin xác thực liên kết (Web, FedCM)
- Tổng quan về tính năng Đăng nhập bằng Google cho Web (Web, Đăng nhập bằng Google)
- Tổng quan về tính năng Đăng nhập bằng một lần chạm trên Android (Android, Đăng nhập bằng một lần chạm)
"Đường liên kết kỳ diệu"
Đăng nhập bằng đường liên kết thần kỳ là một phương thức xác thực, trong đó dịch vụ cung cấp đường liên kết đăng nhập qua email để người dùng có thể nhấp vào đường liên kết đó nhằm tự xác thực. Mặc dù điều này giúp người dùng đăng nhập mà không phải nhớ mật khẩu, nhưng việc chuyển đổi giữa trình duyệt/ứng dụng và ứng dụng email sẽ gây phiền hà. Ngoài ra, do cơ chế xác thực dựa vào email nên khả năng bảo mật yếu của nhà cung cấp dịch vụ email có thể khiến tài khoản của người dùng gặp rủi ro.
Tài nguyên học tập
Web
Để tích hợp khoá truy cập vào trang web, hãy sử dụng API Xác thực web (WebAuthn). Để tìm hiểu thêm, hãy xem các tài nguyên sau:
- Tạo khoá truy cập cho hoạt động đăng nhập không cần mật khẩu: Bài viết thảo luận cách cho phép người dùng tạo khoá truy cập cho một trang web.
- Đăng nhập bằng khoá truy cập thông qua tính năng tự động điền trên biểu mẫu: Bài viết thảo luận về cách thiết kế tính năng đăng nhập không cần mật khẩu bằng khoá truy cập trong khi vẫn hỗ trợ người dùng hiện tại có mật khẩu.
- Triển khai khoá truy cập bằng tính năng tự động điền biểu mẫu trong ứng dụng web: Lớp học lập trình cho phép bạn tìm hiểu cách triển khai khoá truy cập bằng tính năng tự động điền biểu mẫu trong ứng dụng web để đăng nhập đơn giản và an toàn hơn.
- Tìm hiểu cách triển khai khoá truy cập bằng tính năng tự động điền biểu mẫu trong ứng dụng web: Video hướng dẫn về lớp học lập trình Triển khai khoá truy cập bằng tính năng tự động điền biểu mẫu trong ứng dụng web để triển khai khoá truy cập bằng tính năng tự động điền biểu mẫu trong ứng dụng web nhằm giúp việc đăng nhập đơn giản và an toàn hơn.
- Xây dựng ứng dụng WebAuthn đầu tiên: Lớp học lập trình cho phép bạn tìm hiểu cách xây dựng một chức năng xác thực lại đơn giản bằng khoá truy cập trên trang web của bạn.
Android
Để tích hợp khoá truy cập vào ứng dụng Android, hãy dùng thư viện Trình quản lý thông tin xác thực. Để tìm hiểu thêm, hãy xem các tài nguyên sau:
- Đăng nhập cho người dùng bằng Trình quản lý thông tin xác thực: Bài viết thảo luận về cách tích hợp Trình quản lý thông tin xác thực trên Android. Trình quản lý thông tin xác thực là một API Jetpack hỗ trợ nhiều phương thức đăng nhập, chẳng hạn như tên người dùng và mật khẩu, mã xác thực và giải pháp đăng nhập liên kết (chẳng hạn như Đăng nhập bằng Google) trong một API duy nhất
- Đưa phương thức xác thực liền mạch vào ứng dụng bằng khoá truy cập bằng API Trình quản lý thông tin xác thực: Bài viết thảo luận cách tích hợp khoá truy cập thông qua Trình quản lý thông tin xác thực trên Android.
- Tìm hiểu cách đơn giản hoá quy trình xác thực bằng API Trình quản lý thông tin xác thực trong ứng dụng Android: Tìm hiểu cách triển khai API Trình quản lý thông tin xác thực để cung cấp tính năng xác thực liền mạch và an toàn trong ứng dụng bằng khoá truy cập hoặc mật khẩu.
- Ứng dụng mẫu của Trình quản lý thông tin xác thực: Mã mẫu chạy Trình quản lý thông tin xác thực có chứa khoá truy cập.
- Tích hợp Trình quản lý thông tin xác thực với giải pháp của nhà cung cấp thông tin xác thực | Nhà phát triển Android
Trải nghiệm người dùng
Tìm hiểu các đề xuất về trải nghiệm người dùng bằng khoá truy cập: