WebAuthn の機能検出の簡素化

公開日: 2025 年 1 月 15 日、最終更新日: 2026 年 4 月 9 日

WebAuthn には、ハイブリッド プロトコルでの Bluetooth との連携、パスキー プロバイダとの通信、自動入力でのパスキーの提案など、独自の機能があります。ただし、クライアントと認証システムによって、WebAuthn 機能のサポート レベルが異なります。この違いにより、ユーザー エクスペリエンスが断片化し、エラーが発生したり、特定の認証オプションを使用できなくなったりする可能性があります。デベロッパーがクライアントの機能を判断できるようにすることで、このようなバリエーションに対応できる堅牢な認証フローを作成できます。

PublicKeyCredential.getClientCapabilities() メソッドを使用すると、証明書利用者はブラウザでサポートされている WebAuthn 機能を判断できます。このメソッドは、サポートされている機能のリストに解決される Promise を返します。これにより、デベロッパーはクライアントの特定の機能に基づいて認証エクスペリエンスとワークフローを調整できます。

互換性

Browser Support

  • Chrome: 133.
  • Edge: 133.
  • Firefox: 135.
  • Safari: 17.4.

Source

getClientCapabilities()

getClientCapabilities() は、証明書利用者が利用可能な機能を判断できる WebAuthn API です。この API を使用するには、PublicKeyCredential.getClientCapabilities() を呼び出す必要があります。返された Promise は、機能を含むオブジェクトに解決されます。各機能は、true または false で可用性を示します。機能が undefined の場合は、可用性が不明であると見なします。

if (window.PublicKeyCredential && 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()です。

extensions

RP は、getClientCapabilities() で利用可能な拡張機能を判断することもできます。

if (capabilities['extension:appid'] === true) {
  // appId extension is supported
}

識別子には、extension: の後に拡張機能名が付きます。 拡張機能名については、IANA で定義されている WebAuthn 拡張機能識別子をご覧ください。

詳細

パスキーの詳細については、パスキーを使用したパスワードレス ログインからご覧ください。