PublicKeyCredential

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.

* Some parts of this feature may have varying levels of support.

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

Giao diện PublicKeyCredential cung cấp thông tin về một cặp khóa công khai/riêng tư, là thông tin xác thực để đăng nhập vào dịch vụ bằng cặp khóa bất đối xứng không thể bị phishing và chống vi phạm dữ liệu thay vì mật khẩu. Nó kế thừa từ Credential, và là một phần của tiện ích mở rộng Web Authentication API cho Credential Management API.

Credential PublicKeyCredential

Note: API này bị giới hạn trong các ngữ cảnh cấp cao nhất. Việc sử dụng từ bên trong phần tử <iframe> sẽ không có hiệu lực.

Thuộc tính phiên bản

PublicKeyCredential.authenticatorAttachment Read only

Một chuỗi cho biết cơ chế mà qua đó việc triển khai WebAuthn được gắn với thiết bị xác thực tại thời điểm cuộc gọi navigator.credentials.create() hoặc navigator.credentials.get() liên quan hoàn tất.

PublicKeyCredential.id Read only

Kế thừa từ Credential và được ghi đè để là mã hóa base64url của PublicKeyCredential.rawId.

PublicKeyCredential.rawId Read only

Một ArrayBuffer chứa định danh duy nhất toàn cầu cho PublicKeyCredential này. Định danh này có thể được dùng để tra cứu thông tin xác thực cho các cuộc gọi tương lai tới navigator.credentials.get().

PublicKeyCredential.response Read only

Một phiên bản của đối tượng AuthenticatorResponse. Nó có loại AuthenticatorAttestationResponse nếu PublicKeyCredential là kết quả của cuộc gọi navigator.credentials.create(), hoặc loại AuthenticatorAssertionResponse nếu PublicKeyCredential là kết quả của cuộc gọi navigator.credentials.get().

PublicKeyCredential.type Read only

Kế thừa từ Credential. Luôn được đặt thành public-key với các phiên bản PublicKeyCredential.

Phương thức tĩnh

PublicKeyCredential.getClientCapabilities()

Trả về một Promise được giải quyết với một đối tượng có thể được dùng để kiểm tra xem các khả năng WebAuthn cụ thể và tiện ích mở rộng có được hỗ trợ hay không.

PublicKeyCredential.isConditionalMediationAvailable()

Trả về một Promise được giải quyết thành true nếu điều phối có điều kiện có sẵn.

PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()

Trả về một Promise được giải quyết thành true nếu một thiết bị xác thực được gắn với nền tảng có khả năng xác minh người dùng.

PublicKeyCredential.parseCreationOptionsFromJSON()

Phương thức tiện lợi để giải tuần tự hóa dữ liệu đăng ký thông tin xác thực được gửi từ máy chủ khi đăng ký người dùng với thông tin xác thực.

PublicKeyCredential.parseRequestOptionsFromJSON()

Phương thức tiện lợi để giải tuần tự hóa dữ liệu yêu cầu thông tin xác thực được gửi từ máy chủ khi xác thực người dùng (đã đăng ký).

PublicKeyCredential.signalAllAcceptedCredentials()

Báo hiệu cho thiết bị xác thực tất cả các ID thông tin xác thực hợp lệ mà máy chủ relying party vẫn giữ cho một người dùng cụ thể.

PublicKeyCredential.signalCurrentUserDetails()

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ọ.

PublicKeyCredential.signalUnknownCredential()

Báo hiệu cho thiết bị xác thực rằng một ID thông tin xác thực không được máy chủ relying party nhận ra, ví dụ vì nó đã bị xóa.

Phương thức phiên bản

PublicKeyCredential.getClientExtensionResults()

Nếu có tiện ích mở rộng nào được yêu cầu, phương thức này sẽ trả về kết quả xử lý các tiện ích mở rộng đó.

PublicKeyCredential.toJSON()

Phương thức tiện lợi để tạo biểu diễn chuỗi JSON của PublicKeyCredential để gửi đến máy chủ khi đăng ký người dùng với thông tin xác thựcxác thực người dùng đã đăng ký.

Ví dụ

Tạo một phiên bản PublicKeyCredential mới

Ở đây, chúng ta dùng navigator.credentials.create() để tạo thông tin xác thực mới.

js
const createCredentialOptions = {
  publicKey: {
    challenge: new Uint8Array([
      21, 31, 105 /* 29 more random bytes generated by the server */,
    ]),
    rp: {
      name: "Example CORP",
      id: "login.example.com",
    },
    user: {
      id: new Uint8Array(16),
      name: "canand@example.com",
      displayName: "Carina Anand",
    },
    pubKeyCredParams: [
      {
        type: "public-key",
        alg: -7,
      },
    ],
  },
};

navigator.credentials
  .create(createCredentialOptions)
  .then((newCredentialInfo) => {
    const response = newCredentialInfo.response;
    const clientExtensionsResults =
      newCredentialInfo.getClientExtensionResults();
  })
  .catch((err) => {
    console.error(err);
  });

Lấy một phiên bản PublicKeyCredential hiện có

Ở đây, chúng ta lấy một thông tin xác thực hiện có từ thiết bị xác thực, bằng cách dùng navigator.credentials.get().

js
const requestCredentialOptions = {
  publicKey: {
    challenge: new Uint8Array([
      /* bytes sent from the server */
    ]),
  },
};

navigator.credentials
  .get(requestCredentialOptions)
  .then((credentialInfoAssertion) => {
    // send assertion response back to the server
    // to proceed with the control of the credential
  })
  .catch((err) => {
    console.error(err);
  });

Thông số kỹ thuật

Specification
Web Authentication: An API for accessing Public Key Credentials - Level 3
# iface-pkcredential

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

Xem thêm