--- title: PublicKeyCredential slug: Web/API/PublicKeyCredential tags: - API - Authentication - Interface - PublicKeyCredential - Reference - Web Authentication API - WebAuthn - インターフェイス translation_of: Web/API/PublicKeyCredential ---
PublicKeyCredential
インターフェイスは、パスワードの代わりにフィッシングやデータ消去に耐性のある非対称の鍵ペアを使用してサービスにログインするための資格情報である、公開鍵と秘密鍵のペアについての情報を提供します。これは {{domxref("Credential")}} を継承しており、 Web Authentication API が Credential Management API へ拡張された際に作成されました。 {{domxref("Credential")}} を継承している他のインターフェイスとしては、 {{domxref("PasswordCredential")}} や {{domxref("FederatedCredential")}} があります。
メモ: このインターフェイスは最上位のコンテキストに限定されています。 {{HTMLElement("iframe")}} 要素の中で使用しても、何も効果がありません。
PublicKeyCredential.type
{{ReadOnlyInline()}}{{securecontext_inline}}PublicKeyCredential
の場合は、常に public-key
に設定されています。PublicKeyCredential
のグローバルに固有な識別子を保持します。この識別子は今後の {{domxref("CredentialsContainer.get")}} の呼び出しにおいて、資格情報を検索するのに使用することができます。PublicKeyCredential
が {{domxref("CredentialsContainer.create()","navigator.credentials.create()")}} の呼び出しの結果だった場合であった場合は {{domxref("AuthenticatorAttestationResponse")}} 型に、 PublicKeyCredential
が {{domxref("CredentialsContainer.get()","navigator.credentials.get()")}} の呼び出しの結果であった場合は {{domxref("AuthenticatorAssertionResponse")}} 型になります。true
で解決する {{jsxref("Promise")}} を返します。現在の実装状況では、このメソッドは Windows Hello がシステムで利用可能な場合のみ true
で解決します。ここでは、 {{domxref("CredentialsContainer.create()","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); });
ここでは、 {{domxref("CredentialsContainer.get()","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); });
仕様書 | 状態 | 備考 |
---|---|---|
{{SpecName('WebAuthn','#iface-pkcredential','PublicKeyCredential interface')}} | {{Spec2('WebAuthn')}} | 初回定義 |
{{Compat("api.PublicKeyCredential")}}