Server hỏi Client có muốn sử dụng passkey cho lần đăng nhập sau không?
Yes ⇒ Client sẽ sử dụng private_key ở máy, sinh ra 1 public_key, sau đó gửi lên server
Server lưu trữ thông tin (public key, device id, user_id, …)
private_key được lưu ở local
Ở lần đăng nhập tiếp theo
Server tạo ra 1 login challenge, có dạng như dưới.
Client sử dụng private_key để kí vào cái text trong challenge đó, rồi gửi lên server: Chữ kí, credential id (device id), challenge, authenticator data, client data, …
Server nhận được chữ kí và thông tin, biết sẽ phải dùng public_key tương ứng nào (liên quan tới current user + device) để verify lại chữ kí.