Hướng dẫn này cung cấp thông tin định hướng chuyên sâu, tập trung vào hành động để triển khai quy trình xác thực khoá truy cập và quản lý thông tin xác thực an toàn, không phụ thuộc vào khung trong các ứng dụng web hiện đại.
1. Điều kiện tiên quyết cốt lõi đối với khoá truy cập
Khoá truy cập dựa vào API Xác thực web (WebAuthn), áp dụng các quy tắc ràng buộc bảo mật nghiêm ngặt cần được đáp ứng trước khi triển khai:
- Bối cảnh bảo mật: Các phương thức WebAuthn (
navigator.credentials.createvànavigator.credentials.get) được kiểm soát chặt chẽ trong Bối cảnh bảo mật. Ứng dụng PHẢI chạy trênhttps://trong môi trường thực tế hoặchttp://localhostcho quá trình phát triển cục bộ. - Mã nhận dạng bên tin cậy (RP): Mỗi thông tin xác thực đều được liên kết với một mã nhận dạng RP (về cơ bản là tên miền của ứng dụng). Mã RP được truyền trong các tuỳ chọn phía máy chủ PHẢI khớp hoặc là hậu tố hợp lệ của tên miền của nguồn gốc hiện tại (ví dụ:
example.comhợp lệ chologin.example.com). Việc không khớp sẽ dẫn đến ngoại lệSecurityErrorở phía máy khách.
2. Cảnh báo về trải nghiệm người dùng liên quan đến AAGUID
Mã nhận dạng riêng biệt trên toàn cầu của chứng thực trình xác thực (AAGUID) là một giá trị nhận dạng riêng biệt 128 bit được trả về trong dữ liệu chứng thực đăng ký, đại diện cho mẫu/nhà cung cấp của trình xác thực (ví dụ: Trình quản lý mật khẩu của Google, Chuỗi khoá iCloud, 1Password).
- Chỉ gợi ý về trải nghiệm người dùng: Bên phụ thuộc PHẢI sử dụng AAGUID chỉ cho các gợi ý về trải nghiệm người dùng (chẳng hạn như hiển thị tên và biểu tượng của nhà cung cấp khoá truy cập trong danh sách quản lý để giúp người dùng).
- Không có phần phụ thuộc bảo mật: ứng dụng KHÔNG ĐƯỢC sử dụng AAGUID cho các quyết định về quyền truy cập hoặc bảo mật bằng mật mã. Khoá truy cập nền tảng hiện không cung cấp chứng thực mật mã cho AAGUID, nghĩa là tác nhân người dùng có thể thay đổi hoặc mô phỏng khoá truy cập nền tảng.
3. Đề xuất thư viện tách biệt
Để tạo các tuỳ chọn FIDO2/WebAuthn phụ trợ và xác minh chữ ký, nhà phát triển PHẢI dựa vào các thư viện nguồn mở đã được kiểm tra theo từng ngôn ngữ thay vì tự triển khai mật mã:
- JavaScript/TypeScript: SimpleWebAuthn (github.com/MasterKale/SimpleWebAuthn)
- Python: py_webauthn (github.com/duo-labs/py_webauthn)
- Java: Java WebAuthn Server (github.com/Yubico/java-webauthn-server), WebAuthn4J (github.com/webauthn4j/webauthn4j)
- .NET: Thư viện .NET cho FIDO2 (github.com/abergs/fido2-net-lib)
- Go: Thư viện WebAuthn Go (github.com/go-webauthn/webauthn)
- Ruby: WebAuthn Ruby (github.com/cedarcode/webauthn-ruby)
- PHP: WebAuthn Framework (github.com/web-auth/webauthn-framework)
4. Ma trận tham chiếu trường hợp sử dụng
Xác định trường hợp sử dụng phù hợp bên dưới và xem hướng dẫn triển khai đầy đủ. Mỗi trường hợp sử dụng đều có các API quan trọng (PublicKeyCredential.parseCreationOptionsFromJSON, parseRequestOptionsFromJSON, signalAllAcceptedCredentials, signalCurrentUserDetails, signalUnknownCredential, dàn xếp có điều kiện, xử lý AAGUID, v.v.) chỉ được ghi lại trong hướng dẫn theo từng trường hợp sử dụng. KHÔNG bỏ qua bước truy xuất này và KHÔNG thay thế trình bao bọc thư viện của bên thứ ba (chẳng hạn như startAuthentication/startRegistration của SimpleWebAuthn) trên ứng dụng khách – hãy gọi trực tiếp các API trình duyệt WebAuthn gốc. Các đề xuất về thư viện trong Mục 3 chỉ áp dụng cho phía máy chủ (xác minh FIDO2 phụ trợ).
Thông tin chi tiết cụ thể về cách triển khai khoá truy cập và WebAuthn được liên kết với các hướng dẫn sau:
- Đăng ký khoá truy cập: Đăng ký khoá truy cập – Cung cấp tính năng đăng ký và quảng bá khoá truy cập mới.
- Tạo khoá truy cập có điều kiện: Tạo khoá truy cập có điều kiện (Quảng bá sau khi đăng nhập) – Đăng ký khoá truy cập một cách thầm lặng ngay sau khi đăng nhập thành công bằng mật khẩu.
- Xác thực bằng khoá truy cập: Xác thực bằng khoá truy cập — Tự động điền thông tin có thể phát hiện và đăng nhập bằng nút.
- Đăng nhập nhanh: Đăng nhập nhanh bằng chế độ giao diện người dùng tức thì – Đăng nhập theo bối cảnh tại chỗ bằng khoá truy cập cục bộ và mật khẩu đã lưu trước khi điều hướng trang.
- Quản lý khoá truy cập: Quản lý khoá truy cập — Đồng bộ hoá danh sách, đổi tên và xoá bằng trình quản lý mật khẩu.
- Xác thực lại bằng khoá truy cập: Xác thực lại bằng khoá truy cập — Xác minh lại người dùng đã đăng nhập cho các bước nhạy cảm.