PublicKeyCredential: phương thức tĩnh signalCurrentUserDetails()

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

Phương thức tĩnh signalCurrentUserDetails() của giao diện PublicKeyCredential báo hiệu cho thiết bị xác thực rằng một người dùng cụ thể đã cập nhật tên người dùng và/hoặc tên hiển thị của họ trên máy chủ relying party (RP).

Điều này cho phép thiết bị xác thực cập nhật chi tiết tài kho��n người dùng, để đảm bảo chúng đồng bộ với những chi tiết mà RP giữ. Phương thức này chỉ nên được sử dụng khi người dùng hiện tại đã được xác th��c, sau khi đăng nhập, hoặc khi họ thay đổi metadata liên quan đến thông tin xác thực của họ trên ứng dụng web RP.

Cú pháp

js
signalCurrentUserDetails(options)

Tham số

options

Một đối tượng biểu diễn thông tin người dùng đã cập nhật, chứa các thuộc tính sau:

displayName

Một chuỗi biểu diễn displayName người dùng đã cập nhật.

name

Một chuỗi biểu diễn name người dùng đã cập nhật.

rpId

Một chuỗi biểu diễn id của RP đã gửi tín hiệu.

userId

Một chuỗi được mã hóa base64url biểu diễn id của người dùng mà thông tin xác thực liên quan đến.

Giá trị trả về

Một Promise được giải quyết thành undefined.

Ngoại lệ

Promise bị từ chối với các ngoại lệ sau:

SecurityError DOMException

Miền RP không hợp lệ.

TypeError DOMException

credentialId không phải là chuỗi được mã hóa base64url hợp lệ.

Mô tả

Có thể thông tin được lưu trữ trong thiết bị xác thực của người dùng về thông tin xác thực có thể phát hiện (ví dụ, passkey) bị mất đồng bộ với máy chủ. Điều này có thể xảy ra khi người dùng cập nhật tên người dùng hoặc tên hiển thị của họ trên ứng dụng web RP mà không cập nhật thiết bị xác thực.

Lần tiếp theo họ cố đăng nhập bằng thông tin xác thực có thể phát hiện, thông tin xác thực vẫn sẽ được hiển thị cho họ với tên người dùng/tên hiển thị cũ trong UI liên quan, điều này có thể dẫn đến trải nghiệm người dùng khó hiểu.

Để tránh vấn đề này, signalCurrentUserDetails() nên được gọi trên ứng dụng web RP mỗi khi người dùng cập nhật chi tiết tài khoản của họ hoặc đăng nhập, để thông báo cho thiết bị xác thực rằng thông tin người dùng đã được cập nhật. Tùy thiết bị xác thực cách xử lý thông tin này, nhưng kỳ vọng là nó sẽ đồng bộ hóa thông tin người dùng của mình với bản cập nhật được cung cấp.

Ví dụ

Báo hiệu chi tiết người dùng hiện tại

Trong ví dụ này, chúng ta gọi phương thức signalCurrentUserDetail(), truyền vào chi tiết của một thông tin xác thực mà người dùng vừa chỉnh sửa trên RP. Kết quả là, thiết bị xác thực nên cập nhật bản sao thông tin xác thực của mình để giữ nó đồng bộ với RP.

js
if (PublicKeyCredential.signalCurrentUserDetails) {
  await PublicKeyCredential.signalCurrentUserDetails({
    rpId: "example.com",
    userId: "M2YPl-KGnA8", // base64url-encoded user ID
    name: "a.new.email.address@example.com", // username
    displayName: "Maria Sanchez",
  });
} else {
  // Encourage the user to update their details in the authenticator
}

Để biết thêm ví dụ code, xem Keep passkeys consistent with credentials on your server with the Signal API trên developer.chrome.com (2024).

Thông số kỹ thuật

Specification
Web Authentication: An API for accessing Public Key Credentials - Level 3
# dom-publickeycredential-signalcurrentuserdetails

Tương thích trình duyệt

Xem thêm