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

View in English Always switch to English

PublicKeyCredential: parseCreationOptionsFromJSON() 静的メソッド

Baseline 2025
最近利用可能

March 2025以降、この機能は最新のバージョンの端末およびブラウザーで動作します。古い端末やブラウザーでは動作しないことがあります。

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

parseCreationOptionsFromJSON()PublicKeyCredential インターフェイスの静的メソッドで、そのプロパティの JSON 表現から PublicKeyCredentialCreationOptions オブジェクトを作成します。

このメソッドは、認証依頼者から指定された認証情報オプションの情報を、ウェブアプリが 資格情報の作成に使用することができる便利な関数です。

構文

js
PublicKeyCredential.parseCreationOptionsFromJSON(options)

引数

options

PublicKeyCredentialCreationOptions と同じ構造を持つオブジェクトですが、バッファーのプロパティの代わりに base64url でエンコードされた文字列が使用されているものです。

返値

PublicKeyCredentialCreationOptions オブジェクトです。

例外

EncodingError DOMException

options オブジェクトが PublicKeyCredentialCreationOptions オブジェクトに変換できない場合。

SecurityError DOMException

RP のドメインが有効ではありません。

解説

鍵ペアの作成とユーザーの登録を行うウェブ認証プロセスでは、認証依頼者のサーバーが、ユーザーの身元、認証依頼者に関する詳細、および「チャレンジ」など、資格情報の作成に必要な情報をウェブアプリに送信します。

ウェブアプリは、navigator.credentials.create()PublicKeyCredentialCreationOptions オブジェクトを引数として渡して呼び出すことで、この情報を認証器に渡し、資格情報を作成します。

仕様書では、資格情報の生成に必要な情報の送信方法については定義されていません。 便利な手法として、サーバーが、その構造を反映しつつ、challengeuser.id などのバッファープロパティを base64url 文字列としてエンコード方式でエンコードした、PublicKeyCredentialCreationOptions オブジェクトの JSON 形式の表現に情報をカプセル化する方法があります。 このオブジェクトは、JSON 文字列にシリアライズしてウェブアプリに送信し、そこでシリアライズ解除後、PublicKeyCredentialCreationOptions オブジェクトに parseCreationOptionsFromJSON() で変換することができます。

新しいユーザーを登録する際、認証依頼者のサーバーは、期待される資格情報に関する情報をウェブアプリに提供します。 下記のコードは、上記の options 引数で説明されている方法(AuthenticatorResponseAuthenticatorAttestationResponse の取得から引用)で、この情報を定義しています。

js
const createCredentialOptionsJSON = {
  challenge:
    "21, 31, 105, " /* サーバーによって生成された 29 以上のランダムなバイト */,
  rp: {
    name: "Example CORP",
    id: "login.example.com",
  },
  user: {
    id: "16",
    name: "canand@example.com",
    displayName: "Carina Anand",
  },
  pubKeyCredParams: [
    {
      type: "public-key",
      alg: -7,
    },
  ],
};

このオブジェクトは JSON データ型のみを使用しているため、JSON.stringify() を使用して JSON にシリアライズし、ウェブアプリに送信することができます。

js
JSON.stringify(createCredentialOptionsJSON);

このウェブアプリは、JSON 文字列を createCredentialOptionsJSON オブジェクト(図示なし)にシリアライズ解除することができます。 parseCreationOptionsFromJSON() メソッドは、そのオブジェクトを navigator.credentials.create() で使用できる形式に変換するために使用されます。

js
// オプションを create() で使用される形式に変換
const createCredentialOptions =
  PublicKeyCredential.parseCreationOptionsFromJSON(
    createCredentialOptionsJSON, // JSON 形式の表現
  );

navigator.credentials
  .create({ publicKey: createCredentialOptions })
  .then((newCredentialInfo) => {
    // 新しい資格情報をここで処理
  })
  .catch((err) => {
    console.error(err);
  });

仕様書

仕様書
Web Authentication: An API for accessing Public Key Credentials - Level 3
# dom-publickeycredential-parsecreationoptionsfromjson

ブラウザーの互換性

関連情報