PublicKeyCredential
Baseline
広く利用可能
*
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2021年9月以降、すべてのブラウザーで利用可能です。
* この機能の一部は、対応レベルが異なる場合があります。
安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。
PublicKeyCredential インターフェイスは、パスワードの代わりにフィッシングやデータ消去に耐性のある非対称の鍵ペアを使用してサービスにログインするための資格情報である、公開鍵と秘密鍵のペアについての情報を提供します。これは Credential を継承しており、ウェブ認証 API の資格情報管理 API への拡張機能です。
メモ:
このインターフェイスは最上位のコンテキストに限定されています。 <iframe> 要素の中で使用しても、何も効果がありません。
インスタンスプロパティ
PublicKeyCredential.authenticatorAttachment読取専用-
navigator.credentials.create()またはnavigator.credentials.get()の呼び出しが完了した時点で、WebAuthn 実装が認証器に添付される仕組みを示す文字列です。 PublicKeyCredential.id読取専用-
Credentialから継承しており、PublicKeyCredential.rawIdの base64url 符号化になるようオーバーライドしています。 PublicKeyCredential.rawId読取専用-
ArrayBufferで、このPublicKeyCredentialのグローバルに固有な識別子を保持します。この識別子は今後のnavigator.credentials.get()の呼び出しにおいて、資格情報を検索するのに使用することができます。 PublicKeyCredential.response読取専用-
AuthenticatorResponseオブジェクトのインスタンスです。これはPublicKeyCredentialがnavigator.credentials.create()の呼び出しの結果だった場合であった場合はAuthenticatorAttestationResponse型に、PublicKeyCredentialがnavigator.credentials.get()の呼び出しの結果であった場合はAuthenticatorAssertionResponse型になります。 PublicKeyCredential.type読取専用-
Credentialから継承しています。PublicKeyCredentialインスタンスの場合は、常にpublic-keyに設定されています。
静的メソッド
PublicKeyCredential.getClientCapabilities()-
特定の WebAuthn 機能および 拡張機能 が対応しているかどうかを調べるために使用できるオブジェクトで解決される
Promiseを返します。 -
条件付き仲介が利用できる場合に
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() を用いて新しい資格情報を生成します。
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() を用いて認証機器から既存の資格情報を読み取ります。
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> |
ブラウザーの互換性
関連情報
- 親インターフェイスの
Credential