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 thành phần 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 dựa trên: Trong ngữ cảnh khoá truy cập, bên phụ thuộc (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 một ứng dụng (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 ứ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 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(các) thiết bị của người dùng cuối để 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 trên ứ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ã nhận dạng bên bị hạn chế: 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 chặ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 một bên bị hạn chế 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 sẽ được trả về. Gửi thông tin đó đế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.

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 ứ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ã nhận dạng bên bị hạn chế: 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 một bên bị hạn chế yêu cầu xác thực bằng khoá truy cập và người dùng xác minh 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á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 đó, Google Play sẽ xác minh thông tin đăng nhập khoá công khai đã tạo 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 cẩn thận thông tin xác thực 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ó thể 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ợ bạn tăng tốc độ tích hợp khoá truy cập.

Để tìm danh sách thư viện nguồn mở, hãy xem phần Thư viện của Passkeys.dev hoặc danh sách thư viện WebAuthn nguồn cộng đồng. Để tìm giải pháp, Liên minh FIDO có một danh sách 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 diễn ra sau 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ại một số người dùng. Hiện tạ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 như sau:

  • Có người dùng đang sử dụng 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 được mở rộng trên nhiều hệ điều hành và trình duyệt, nhưng những người đang sử dụng phiên bản cũ 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 nhiều 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ó nhiều người ngần ngại chuyển sang những điều mới mẻ. Khi hệ sinh thái khoá truy cập phát triển ổn định, người dùng sẽ hiểu được cách hoạt động của khoá truy cập 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 giữ các cơ chế cũ lại giống như việc để lại một lỗ hổng. Bạn nên truy cập lại và cải thiện các cơ chế xác thực hiện có.

Mật khẩu

Tạo và quản lý mật khẩu mạnh 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 về bảo mật cũng như trải nghiệm đăng nhập. Hãy xem bạn có thể thực hiện những thay đổi đó như thế nào:

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 sử dụng được. Yêu cầu cung cấp 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 đó. 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 mật khẩu này làm giảm khả năng 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 tốt 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 gửi OTP, hãy tham khảo 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.

Liên kết danh tính

Liên kết danh tính là một lựa 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 và người dùng thấy việc xác thực dựa trên mật khẩu là dễ dàng và ưu tiên hơn. Việc liên kết danh tính là phần 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ỉ qua một bước, còn khoá truy cập sẽ giú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. Để 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 khi 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à ứng dụng email sẽ rất khó khăn. Ngoài ra, vì cơ chế xác thực phụ thuộc 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 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 cho trải nghiệm người dùng về khoá truy cập: