公開日: 2025 年 1 月 15 日
WebAuthn には、ハイブリッド プロトコル用の Bluetooth とのやり取り、パスキー プロバイダとの通信、自動入力でのパスキーの提案など、独自の機能が用意されています。ただし、クライアントや認証システムによって、WebAuthn 機能のサポートレベルは異なります。この差異により、一部のユーザーにエラーが発生したり、特定の認証オプションを使用できなくなったりするなど、ユーザー エクスペリエンスが断片化される可能性があります。デベロッパーがクライアントの機能を判断できる方法を提供することで、デベロッパーはこれらの変化に適応するより堅牢な認証フローを作成できます。
PublicKeyCredential.getClientCapabilities()
メソッドを使用すると、利用者はブラウザでサポートされている WebAuthn 機能を特定できます。このメソッドは、サポートされている機能のリストを解決する Promise を返します。これにより、デベロッパーはクライアント固有の機能に基づいて認証エクスペリエンスとワークフローを調整できます。
互換性
Browser Support
getClientCapabilities()
getClientCapabilities()
は、利用者が利用可能な機能を決定できる WebAuthn API です。この API を使用するには、PublicKeyCredential.getClientCapabilities()
を呼び出す必要があります。返された Promise は、各機能の可用性を true
または false
で示す機能を含んだオブジェクトに解決されます。機能が undefined
の場合は、その可用性が不明であると見なします。
if (window.PublicKeyCredential &&
if (PublicKeyCredential.getClientCapabilities) {
const capabilities = await PublicKeyCredential.getClientCapabilities();
if (capabilities.conditionalGet === true &&
capabilities.passkeyPlatformAuthenticator === true) {
// The browser supports passkeys and the conditional mediation.
}
}
}
conditionalCreate
ユーザーが認証情報の作成に同意している場合は、ブラウザは目立つモーダル UI なしで認証情報を作成できます。
conditionalGet
ブラウザは、目立つモーダル UI ではなく、自動入力ダイアログの一部としてパスキーを表示することで認証できます。既存の同等の値は PublicKeyCredential.isConditionalMediationAvailable()
です。
hybridTransport
デバイスは Bluetooth を使用できるため、ブラウザは認証情報を作成し、ハイブリッド プロトコルを使用してクロスデバイスで認証できます。通常、ブラウザは QR コードを表示して、ユーザーがスキャンして認証情報が保存されているスマートフォンでログインできるようにします。
passkeyPlatformAuthenticator
ブラウザは認証情報を作成し、ユーザー確認プラットフォーム認証システムまたはハイブリッド プロトコルを介してそれをサポートする別のデバイスで認証できます。hybridTransport ||
userVerifyingPlatformAuthenticator
と同じです。
relatedOrigins
ブラウザは、関連するオリジン ファイルで指定されている限り、RP ID と一致しない認証情報を作成して認証できます。
signalAllAcceptedCredentials
ブラウザはサーバーで利用可能な認証情報をパスキー プロバイダに通知できるため、パスキー プロバイダはパスキーリストをサーバーと整合させることができます。
signalCurrentUserDetails
ブラウザは、サーバー上のユーザー名や表示名などのユーザー情報をパスキー プロバイダに通知できるため、パスキー プロバイダはパスキー情報をサーバーとの整合性を保つことができます。
signalUnknownCredential
ブラウザはサーバー上の削除された認証情報をパスキー プロバイダに通知できるため、パスキー プロバイダはパスキー リストをサーバーとの整合性を保つことができます。
userVerifyingPlatformAuthenticator
ブラウザは、プラットフォーム認証システムで認証情報を作成して認証できます。これは、ブラウザがハイブリッド プロトコルをサポートしていることを意味するものではありません。既存の同等の値は PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()
です。
拡張機能
RP は getClientCapabilities()
を使用して、利用可能な拡張機能を確認することもできます。
if (capabilities['extension:appid'] === true) {
// appId extension is supported
}
識別子には extension:
という接頭辞が付けられ、その後に拡張子名が続きます。拡張機能名については、IANA で定義されている WebAuthn 拡張機能識別子をご覧ください。
その他の情報
パスキーの詳細については、パスキーを使用したパスワード不要のログインをご覧ください。