Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Mật khẩu yếu, mật khẩu bị lộ, trang đăng nhập giả mạo: đây là những nguyên nhân phổ biến của việc mất tài khoản. Passkey ra đời để giải quyết tận gốc bằng cách thay mật khẩu bằng khóa mật mã gắn với thiết bị của bạn. Cùng tìm hiểu nó hoạt động ra sao và lập trình viên cần biết gì.
Passkey là phương thức đăng nhập dựa trên cặp khóa mật mã: một khóa công khai lưu ở máy chủ, một khóa riêng tư nằm trên thiết bị của bạn và không bao giờ rời khỏi đó. Khi đăng nhập, thiết bị dùng khóa riêng ký một thử thách do máy chủ gửi. Bạn mở khóa bằng vân tay, khuôn mặt hoặc mã PIN của thiết bị. Passkey dựa trên chuẩn WebAuthn thuộc họ chuẩn FIDO2.
Đoạn JavaScript minh họa bước tạo passkey. Giá trị challenge và thông tin người dùng phải do máy chủ sinh ra và truyền xuống; ở đây chỉ nêu cấu trúc chính:
const credential = await navigator.credentials.create({
publicKey: {
challenge: challengeTuMayChu, // ArrayBuffer ngẫu nhiên từ server
rp: { name: "Ứng dụng của tôi", id: "example.com" },
user: {
id: userIdTuMayChu, // ArrayBuffer
name: "an@example.com",
displayName: "Nguyễn An"
},
pubKeyCredParams: [{ type: "public-key", alg: -7 }],
authenticatorSelection: { userVerification: "preferred" }
}
});
// Gửi credential về máy chủ để xác minh và lưu khóa công khai
Bước đăng nhập dùng navigator.credentials.get() với một challenge mới. Phía máy chủ nên dùng thư viện đã được kiểm chứng để xác minh dữ liệu thay vì tự viết, vì chi tiết mật mã rất dễ sai.
Nhiều hệ điều hành và trình quản lý mật khẩu cho phép đồng bộ passkey giữa các thiết bị của cùng một tài khoản, tránh mất quyền truy cập khi đổi máy. Khả năng này cũng gắn với độ an toàn của tài khoản đám mây dùng để đồng bộ. Vì vậy dịch vụ vẫn nên có phương án khôi phục tài khoản an toàn.
Mức độ quen thuộc của người dùng chưa cao, hệ sinh thái đồng bộ giữa các nền tảng khác nhau còn có những điểm chưa liền mạch, và việc tích hợp vào hệ thống đăng nhập cũ cần công sức. Tuy vậy, hướng đi chung của ngành là giảm phụ thuộc vào mật khẩu.
Passkey là bước tiến thực tế giúp đăng nhập vừa an toàn vừa tiện hơn. Nếu bạn xây dựng ứng dụng có tài khoản người dùng, hiểu WebAuthn sẽ giúp bạn chuẩn bị cho tương lai không mật khẩu.
Để học cách xây dựng hệ thống đăng nhập và bảo mật đúng chuẩn, mời bạn xem các khóa học backend tại codebem.com.
Nguyễn Đình Cường
0 comment