このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

PublicKeyCredential

Baseline 広く利用可能 *

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2021年9月以降、すべてのブラウザーで利用可能です。

* この機能の一部は、対応レベルが異なる場合があります。

安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。

PublicKeyCredential インターフェイスは、パスワードの代わりにフィッシングやデータ消去に耐性のある非対称の鍵ペアを使用してサービスにログインするための資格情報である、公開鍵と秘密鍵のペアについての情報を提供します。これは Credential を継承しており、ウェブ認証 API資格情報管理 API への拡張機能です。

Credential PublicKeyCredential

メモ: このインターフェイスは最上位のコンテキストに限定されています。 <iframe> 要素の中で使用しても、何も効果がありません。

インスタンスプロパティ

PublicKeyCredential.authenticatorAttachment 読取専用

navigator.credentials.create() または navigator.credentials.get() の呼び出しが完了した時点で、WebAuthn 実装が認証器に添付される仕組みを示す文字列です。

PublicKeyCredential.id 読取専用

Credential から継承しており、 PublicKeyCredential.rawIdbase64url 符号化になるようオーバーライドしています。

PublicKeyCredential.rawId 読取専用

ArrayBuffer で、この PublicKeyCredential のグローバルに固有な識別子を保持します。この識別子は今後の navigator.credentials.get() の呼び出しにおいて、資格情報を検索するのに使用することができます。

PublicKeyCredential.response 読取専用

AuthenticatorResponse オブジェクトのインスタンスです。これは PublicKeyCredentialnavigator.credentials.create() の呼び出しの結果だった場合であった場合は AuthenticatorAttestationResponse 型に、 PublicKeyCredentialnavigator.credentials.get() の呼び出しの結果であった場合は AuthenticatorAssertionResponse 型になります。

PublicKeyCredential.type 読取専用

Credential から継承しています。 PublicKeyCredential インスタンスの場合は、常に public-key に設定されています。

静的メソッド

PublicKeyCredential.getClientCapabilities()

特定の WebAuthn 機能および 拡張機能 が対応しているかどうかを調べるために使用できるオブジェクトで解決される Promise を返します。

PublicKeyCredential.isConditionalMediationAvailable()

条件付き仲介が利用できる場合に true に解決される Promise を返します。

PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()

静的メソッドで、認証機器が所属するプラットフォームがユーザーを検証する能力を持っているならば true で解決する Promise を返します。

PublicKeyCredential.parseCreationOptionsFromJSON()

資格情報を使用してユーザーを登録するの際に、サーバーから送信された資格情報登録データをシリアライズ解除するための便利なメソッド。

PublicKeyCredential.parseRequestOptionsFromJSON()

(登録済み)ユーザーの認証を行う際、サーバーから送信された資格情報リクエストデータをシリアライズ解除するための便利なメソッドです。

PublicKeyCredential.signalAllAcceptedCredentials()

特定のユーザーについて、認証依頼者サーバーが依然として保持しているすべての有効な 資格情報 ID を認証器に通知します。

PublicKeyCredential.signalCurrentUserDetails()

特定のユーザーがユーザー名や表示名を更新したことを、認証器に通知します。

PublicKeyCredential.signalUnknownCredential()

資格情報 ID が、例えば削除されたなどの理由で、認証依頼者サーバーによって認識されなかったことを、認証器に通知します。

インスタンスメソッド

PublicKeyCredential.getClientExtensionResults()

何らかの拡張機能がリクエストされた場合、このメソッドはその拡張機能が処理した結果を返します。

PublicKeyCredential.toJSON()

資格情報によるユーザーの登録登録済みユーザーの認証を行う際に、サーバーへ送信するための PublicKeyCredential の JSON 文字列表現を作成する便利なメソッドです。

PublicKeyCredential の新しいインスタンスを生成

ここでは、 navigator.credentials.create() を用いて新しい資格情報を生成します。

js
const createCredentialOptions = {
  publicKey: {
    challenge: new Uint8Array([
      21, 31, 105 /* サーバーによって生成された 29 以上のランダムなバイト */,
    ]),
    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);
  });

PublicKeyCredential の既存のインスタンスを取得

ここでは、 navigator.credentials.get() を用いて認証機器から既存の資格情報を読み取ります。

js
const requestCredentialOptions = {
  publicKey: {
    challenge: new Uint8Array([/* サーバーから送信されるバイト列 */]),
  },
};

navigator.credentials
  .get(requestCredentialOptions)
  .then((credentialInfoAssertion) => {
    // サーバーにアサーションレスポンスを返送し、
    // 資格情報の制御を続行する
  })
  .catch((err) => {
    console.error(err);
  });

仕様書

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

ブラウザーの互換性

関連情報