PublicKeyCredential

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

PublicKeyCredential インターフェイスは、パスワードの代わりにフィッシングやデータ消去に耐性のある非対称の鍵ペアを使用してサービスにログインするための資格情報である、公開鍵と秘密鍵のペアについての情報を提供します。これは Credential を継承しており、 Web Authentication APICredential Management API へ拡張された際に作成されました。 Credential を継承している他のインターフェイスとしては、 PasswordCredentialFederatedCredential があります。

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

プロパティ

PublicKeyCredential.type 読取専用 安全なコンテキスト用
Credential から継承しています。 PublicKeyCredential の場合は、常に public-key に設定されています。
PublicKeyCredential.id 読取専用 安全なコンテキスト用
Credential から継承しており、 PublicKeyCredential.rawIdbase64url 符号化になるようオーバーライドしています。
PublicKeyCredential.rawId 読取専用 安全なコンテキスト用
ArrayBuffer 型で、この PublicKeyCredential のグローバルに固有な識別子を保持します。この識別子は今後の CredentialsContainer.get の呼び出しにおいて、資格情報を検索するのに使用することができます。
PublicKeyCredential.response 読取専用 安全なコンテキスト用
AuthenticatorResponse オブジェクトのインスタンスです。これは PublicKeyCredentialnavigator.credentials.create() の呼び出しの結果だった場合であった場合は AuthenticatorAttestationResponse 型に、 PublicKeyCredentialnavigator.credentials.get() の呼び出しの結果であった場合は AuthenticatorAssertionResponse 型になります。

メソッド

PublicKeyCredential.getClientExtensionResults()安全なコンテキスト用
何らかの拡張機能がリクエストされた場合、このメソッドはその拡張機能が処理した結果を返します。
PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()安全なコンテキスト用
静的メソッドで、認証機器が所属するプラットフォームがユーザーを検証する能力を持っているならば true で解決する Promise を返します。現在の実装状況では、このメソッドは Windows Hello がシステムで利用可能な場合のみ true で解決します。

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

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

var publicKey = {
  challenge: /* from the server */,
  rp: {
    name: "Example CORP",
    id  : "login.example.com"
  },
  user: {
    id: new Uint8Array(16),
    name: "jdoe@example.com",
    displayName: "John Doe"
  },
  pubKeyCredParams: [
    {
      type: "public-key",
      alg: -7
    }
  ]
};

navigator.credentials.create({ publicKey })
  .then(function (newCredentialInfo) {
    var response = newCredentialInfo.response;
    var clientExtensionsResults = newCredentialInfo.getClientExtensionResults();
  }).catch(function (err) {
     console.error(err);
  });

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

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

var options = {
  challenge: new Uint8Array([/* bytes sent from the server */])
};

navigator.credentials.get({ "publicKey": options })
    .then(function (credentialInfoAssertion) {
    // send assertion response back to the server
    // to proceed with the control of the credential
}).catch(function (err) {
     console.error(err);
});

仕様書

仕様書 状態 備考
Web Authentication: An API for accessing Public Key Credentials Level 1
PublicKeyCredential interface の定義
勧告 初回定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
PublicKeyCredentialChrome 完全対応 67
完全対応 67
完全対応 65
補足 無効
補足 Only supports USB U2F tokens.
無効 From version 65: this feature is behind the Web Authentication API preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Edge 完全対応 18Firefox 完全対応 60
補足
完全対応 60
補足
補足 Only supports USB U2F tokens.
IE 未対応 なしOpera 未対応 なしSafari 完全対応 13WebView Android 完全対応 70Chrome Android 完全対応 70Firefox Android 完全対応 60
補足
完全対応 60
補足
補足 Only supports USB U2F tokens.
Opera Android 未対応 なしSafari iOS 完全対応 13.3Samsung Internet Android 未対応 なし
getClientExtensionResultsChrome 完全対応 67
完全対応 67
完全対応 65
補足 無効
補足 Only supports USB U2F tokens.
無効 From version 65: this feature is behind the Web Authentication API preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Edge 完全対応 18Firefox 完全対応 60
補足
完全対応 60
補足
補足 Only supports USB U2F tokens.
IE 未対応 なしOpera 未対応 なしSafari 完全対応 13WebView Android 完全対応 70Chrome Android 完全対応 70Firefox Android 完全対応 60
補足
完全対応 60
補足
補足 Only supports USB U2F tokens.
Opera Android 未対応 なしSafari iOS 完全対応 13.3Samsung Internet Android 未対応 なし
isUserVerifyingPlatformAuthenticatorAvailableChrome 完全対応 67
完全対応 67
完全対応 65
補足 無効
補足 Only supports USB U2F tokens.
無効 From version 65: this feature is behind the Web Authentication API preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Edge 完全対応 18Firefox 完全対応 60
補足
完全対応 60
補足
補足 Only supports USB U2F tokens.
IE 未対応 なしOpera 未対応 なしSafari 完全対応 13WebView Android 完全対応 70Chrome Android 完全対応 70Firefox Android 完全対応 60
補足
完全対応 60
補足
補足 Only supports USB U2F tokens.
Opera Android 未対応 なしSafari iOS 完全対応 13.3Samsung Internet Android 未対応 なし
rawIdChrome 完全対応 67
完全対応 67
完全対応 65
補足 無効
補足 Only supports USB U2F tokens.
無効 From version 65: this feature is behind the Web Authentication API preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Edge 完全対応 18Firefox 完全対応 60
補足
完全対応 60
補足
補足 Only supports USB U2F tokens.
IE 未対応 なしOpera 未対応 なしSafari 完全対応 13WebView Android 完全対応 70Chrome Android 完全対応 70Firefox Android 完全対応 60
補足
完全対応 60
補足
補足 Only supports USB U2F tokens.
Opera Android 未対応 なしSafari iOS 完全対応 13.3Samsung Internet Android 未対応 なし
responseChrome 完全対応 67
完全対応 67
完全対応 65
補足 無効
補足 Only supports USB U2F tokens.
無効 From version 65: this feature is behind the Web Authentication API preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Edge 完全対応 18Firefox 完全対応 60
補足
完全対応 60
補足
補足 Only supports USB U2F tokens.
IE 未対応 なしOpera 未対応 なしSafari 完全対応 13WebView Android 完全対応 70Chrome Android 完全対応 70Firefox Android 完全対応 60
補足
完全対応 60
補足
補足 Only supports USB U2F tokens.
Opera Android 未対応 なしSafari iOS 完全対応 13.3Samsung Internet Android 未対応 なし

凡例

完全対応  
完全対応
未対応  
未対応
実装ノートを参照してください。
実装ノートを参照してください。
ユーザーが明示的にこの機能を有効にしなければなりません。
ユーザーが明示的にこの機能を有効にしなければなりません。

関連情報