Hướng dẫn cho nhà phát triển khoá truy cập cho các bên dựa trên

Tìm hiểu cách tích hợp khoá truy cập vào dịch vụ của bạn.

Phân tích 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 trung lập: Trong ngữ cảnh khoá truy cập, một bên đáng tin cậy (gọi tắt là RP) sẽ xử lý việc phát hành và xác thực khoá truy cập. RP phải vận hành máy khách (một trang web hoặc ứng dụng tạo khoá truy cập hoặc xác thực bằng khoá truy cập) và một 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 máy khách. Ứng dụng có 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ư Digital AssetLinks (Đường liên kết đến tài sản kỹ thuật số).
  • Authenticator: Một thiết bị điện toá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 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(các) thiết bị của người dùng cuối có chức năng phân phát, lưu trữ và đồng bộ hoá khoá truy cập, 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 một trang web hoặc thư viện Trình quản lý thông tin xác thực trên một ứ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 đáng tin cậy ở 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 đăng nhập cần loại trừ: Thông tin về các khoá truy cập đã lưu trữ trước đây để ngăn chặn tình trạng đăng ký trùng lặp.
  • Loại khoá truy cập: Liệu sẽ 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ó đặt thông tin xác thực ở chế độ có thể phát hiện để người dùng có thể chọn một tài khoản để đăng nhập hay không.

Sau khi một 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, một 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 thông tin đó đến máy chủ và lưu trữ mã thông tin xác thực cũng như khoá công khai để xác thực trong tương lai.

Quy trình đăng ký

Tìm hiểu chi tiết cách tạo và đăng ký khoá truy cập:

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 một ứ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 đáng tin cậy ở 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 một RP yêu cầu xác thực bằng 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, thông tin xác thực khoá công khai sẽ được trả về. Gửi mã đó đến máy chủ và xác minh chữ ký bằng khoá công khai đã lưu trữ.

Quy trình xác thực

Tìm hiểu chi tiết cách xác thực bằng khoá truy cập:

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ử thách, thông tin người dùng, mã thông tin xác thực cần loại trừ, v.v. Sau đó, hệ thống sẽ xác minh thông tin xác thực 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 và xác minh chữ ký một cách cẩn thận để cho phép người dùng đăng nhập.

Tìm hiểu thêm trong hướng dẫn phía máy chủ của chúng tôi:

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ũ (chẳng hạn như mật khẩu) sang khoá truy cập sẽ không diễn ra trong một ngày. Chúng tôi biết rằng bạn muốn 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 này có thể khiến người dùng nhầm lẫn hoặc bỏ lại một số người dùng. Tạm thời, bạn nên giữ lại phương thức xác thực hiện có.

Có một vài lý do:

  • Có người dùng trong môi trường khoá truy cập không tương thích: Tính năng hỗ trợ khoá truy cập đang mở rộng 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ũ hơn vẫn 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 các môi trường có thể 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 do dự khi bắt đầu sử dụng những nội dung mới. Khi hệ sinh thái khoá truy cập hoàn thiện, họ sẽ hiểu cách hoạt động và lý do khoá truy cập hữu ích.

Xem lại cơ chế xác thực hiện có

Mặc dù khoá truy cập giúp quá trình xác thực của bạn đơn giản và an toàn hơn, nhưng việc duy trì cơ chế cũ chẳng khác gì 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 có.

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 một 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ý độ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 đối với tính bảo mật và trải nghiệm đăng nhập. Xem cách thực hiện những thay đổi đó:

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 người dùng nào cũng dùng được. Yêu cầu thêm thông tin xác thực 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 OTP làm giảm xác suất 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 tốt hơn nhiều so với việc để người dùng chỉ sở hữu một mật khẩu.

Nếu bạn chọn SMS làm cách để cung cấp 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ằm nhập OTP.

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 một cách an toàn và dễ dàng. Với tính năng 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ừ mộ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 các lượt chuyển đổi tuyệt vời cho nhà phát triển. Ngoài ra, người dùng thấy họ nên xác thực dựa trên mật khẩu một cách dễ dàng và ưu tiên. Việc liên kết danh tính bổ sung cho khoá truy cập. Bạn nên đăng ký vì trang web hoặc ứng dụng có thể nhận thông tin cơ bản về hồ sơ của người dùng chỉ qua một bước, còn khoá truy cập là một lựa chọn phù hợp để đơ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 xây dựng các hệ thố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 (gọi tắt là FedCM). Nếu bạn chạy một nhà cung cấp danh tính, hãy xem thông tin chi tiết và xem liệu bạn có cần sử dụng FedCM hay không.

Đăng nhập bằng đường liên kết thần kỳ là phương thức xác thực mà trong đó dịch vụ gửi đườ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 cần nhớ mật khẩu, nhưng việc chuyển đổi giữa trình duyệt/ứng dụng và chương trình email khách sẽ gặp 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 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 của bạn, 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:

Android

Để tích hợp khoá truy cập vào ứng dụng Android, hãy sử 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:

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: