WebAuthn Signal APIが、クライアントサイドの認証器でパスキーのシームレスな削除とメタデータ(user.name、user.displayName)の更新をどのように可能にするかを解説します。
Vincent
Created: August 8, 2025
Updated: January 22, 2026

See the original blog version in English here.

Looking for a dev-focused passkey reference? Download our Passkeys Cheat Sheet. Trusted by dev teams at Ally, Stanford CS & more.
最終更新日:2025年11月4日
各プラットフォームにおける WebAuthn Signal API のサポート状況の概要は以下の通りです。
| プラットフォーム | Webサポート | ネイティブサポート |
|---|---|---|
| Windows | ✅ Chrome + Google パスワード マネージャー | N/A |
| macOS | ✅ Safari 26+ (iCloud キーチェーン) | N/A |
| iOS | ✅ Safari 26+ (iCloud キーチェーン) | ✅ iOS 26+ (WWDC 2025 Session 279) |
| Android | 🧪 Chrome 143 (Beta) | 🧪 Credential Manager Alpha (v1.6.0-alpha05; v1.6.0-beta03でベータ版) |
⚠️ 既知の問題: Safari 26+ には、Promise が正しく解決されないバグがあります(WebKit Bug #298951)。修正のマージ待ちです。
パスキーのエコシステムは日々進化しています。変化に対応するため、基盤となる WebAuthn 標準も急速に発展しています。新機能は多くの場合、GitHub 上の技術的な Explainer(解説書)として始まり、十分な議論を経て標準規格へのプルリクエスト(PR)として提案されます。最近、このプルリクエストが、WebAuthn Signal APIとして標準ドラフトに追加されました。この記事では、以下の点について見ていきます。
執筆時点では、WebAuthn Signal API は Chrome 132 以降でデフォルトで有効になっています。以前は Reporting API と呼ばれていましたが、別のAPIとの名前の競合を避けるために名称が変更されました。
WebAuthn Signal API は、クライアントサイドでのパスキー管理に関する特定のユースケースに対応します。具体的には、Relying Party (RP) と、クライアントサイドの OS に組み込まれた認証器 (Authenticator) との間で情報の同期を保つのに役立ちます。主に以下の2つの重要なユースケースがあります。
Subscribe to our Passkeys Substack for the latest news.
パスキーが作成される際、user.id、user.name、user.displayName
といういくつかの情報が含まれます。パスキー自体は、ユニークな
Credential ID によって識別されます。
user.id
は、パスキーをユーザーのアカウントと実際に照合するために使用されるため、非常に重要です。以下の図は、どの情報がどのフィールドに保存されるかを示す一般的なデータベース構造の例です。
ここで理解しておくべき重要な点は、user.name(多くの場合メールアドレス)や
user.displayName(読みやすい表示名)はユーザーが自分のアカウントを識別するのを助けるためのものですが、パスキーとアカウントの本当の紐付けは
user.id と Credential ID によって管理されているということです。
user.id
を使ってアカウントと一意に照合されます。問題になるのは、メールアドレスなどの user.name
が変更された場合です。現在、クライアントサイドの認証器上の情報を直接更新する仕組みはありません。ユーザーがメールアドレスを変更するなど、user.name
は様々な理由で変わる可能性があります。サーバー側でアカウントのメタデータが変更されても、認証器の選択画面には古い
user.name が表示され続け、ユーザーの混乱を招く原因となります。
これまでの回避策(ワークアラウンド)は、同じ user.id で更新された user.name
を持つ新しいパスキーを作成し、既存のパスキーを上書きすることでした。しかし、この方法はいくつかの理由で不便です。
user.id
ごとに1つのパスキーしか保存できません。つまり、メタデータを更新するためだけに古いパスキーを新しいものに置き換える必要があり、余計な手間がかかります。メールアドレスや電話番号などの識別子は定期的に変わる可能性があります。user.name や
user.displayName
を認証器上で直接更新する簡単な方法がないと、ユーザーは古いメールアドレスに関連付けられたパスキーを見せられ、それを選択しなければならないという永続的な問題に直面します。これでは、パスキーが目指すシームレスな体験が損なわれてしまいます。WebAuthn
Signal
API は、新しいパスキーを作成することなく、RP がパスキーのメタデータの更新を通知(Signal)できるようにすることで、この問題を解決しようとしています。
実装方法を解説する前に、もう一つの重要なユースケースを見てみましょう。
Become part of our Passkeys Community for updates & support.
もう一つの重要なユースケースは、クライアントサイドの認証器からのパスキーの削除です。時が経つにつれて、ユーザーがパスキー管理リストから認証情報を無効化したり、アカウント自体を削除したりすることがあります。そのような場合、将来の認証情報選択 UI(Conditional UI / パスキーの自動入力)に表示されないように、クライアントサイドの認証器からも確実に削除する必要があります。
この機能は、以下のようなシナリオで必要になります。
ユーザーの視点からすると、上記のようなダイアログでアカウント設定から削除を行っても、このクライアント(端末)上のパスキーまでは削除されないというのは理解しにくい挙動です。
クライアントサイドでパスキーを直接削除する方法がないと、これらの古くなったり無効になったりした認証情報が選択 UI に残り続け、混乱を招きます。ユーザーが無効なパスキーを使おうとして認証に失敗するなど、UX の低下につながります。
Corbado Connect 管理コンソールでサーバーサイドのパスキーを削除する方法については、こちらの動画をご覧ください。
WebAuthn Signal API の実装には、機能が正しく安全に統合されるようにするためのいくつかのステップと考慮事項があります。Signal API を使用すると、Relying Party (RP) はクライアントサイドの認証器上のパスキー認証情報を更新または削除できます。ここでは、実装のための重要なポイントと手順を解説します。
WebAuthn Signal API を実装する際は、以下の点に注意することが重要です。
これらの考慮事項は、WebAuthn Signal API を正しく機能させるために不可欠な要素です。
WebAuthn Signal API は、RP がクライアントサイドの認証器上のパスキーに関連付けられたメタデータを更新するための合理的なメカニズムを提供します。これは、不必要に新しいパスキーを作成することなく、ユーザーが認証情報選択 UI で正確かつ最新の情報を確認できるようにするために特に重要です。
signalCurrentUserDetails(options) によるメタデータの更新
Signal API の signalCurrentUserDetails(options)
メソッドは、パスキーのメタデータを更新するために設計されています。このメソッドを使用すると、RP は
user.name と user.displayName の現在の値を提供できます。
プロセスの仕組みは以下の通りです(WebAuthn Level 3 標準も参照してください)。
signalCurrentUserDetails(options)
メソッドには、rp.id、user.id、および更新された user.name と user.displayName
の値が含まれます。PublicKeyCredential.signalCurrentUserDetails({ rpId: "example.com", userId: "aabbcc", // ユーザーハンドル、base64url name: "New user name", displayName: "New display name", });
rpId と userId
に一致する認証情報を検索します。一致するすべての認証情報について、認証器はその name
と displayName を更新します。signalCurrentUserDetails(options)
メソッドを実行することで、RP はユーザーが認証を行う様々なデバイスやプラットフォーム間でパスキーのメタデータの一貫性を保つことができます。これにより、認証情報選択 UI に古くなったり誤ったりした情報が表示される可能性が低くなります。上のスクリーンショットでは、Google Chrome がユーザーにこのような更新をどのように通知しているかがわかります。WebAuthn Signal API は Chrome の一部であり、デスクトップ版の Google パスワード マネージャーでテストできます。
WebAuthn Signal
API は、RP がクライアントサイドの認証器からパスキーの削除を通知(シグナル)する仕組みも提供します。これは、古くなったり無効になった認証情報が選択 UI に表示されないようにし、スムーズで安全なユーザー体験を維持するために不可欠です。ローカルでパスキーを削除するには、signalUnknownCredential(options)
と signalAllAcceptedCredentials(options)
の2つのメソッドがあります。前者はユーザーが認証されていない状況で使用でき、後者はユーザーが認証されている場合に使用できます。したがって、プライバシーの観点からは後者(signalAllAcceptedCredentials)が推奨されます。
それぞれの仕組みは以下の通りです。
signalUnknownCredential(options) メソッドには、rpId(Relying
Party ID)と credentialId(削除対象の認証情報の一意な識別子)が含まれます。PublicKeyCredential.signalUnknownCredential({ rpId: "example.com", credentialId: "aabbcc", // ユーザーが試行したばかりの credential id、base64url });
signalUnknownCredential(options)
メソッドが呼び出されると、クライアントサイドの認証器は rpId と credentialID
に一致する認証情報を探し、除外対象とします。認証器の機能に応じて、認証情報は削除されるか、将来の認証セレモニーで非表示にするための認証器固有の手順が実行されます。signalAllAcceptedCredentials(options)
メソッドには、rpId、userId、および有効な Credential ID のリストである
allAcceptedCredentialIds(保持すべき認証情報のユニークIDのリスト)が含まれます。PublicKeyCredential.signalAllAcceptedCredentials({ rpId: "example.com", userId: "aabbcc", // ユーザーハンドル、base64url allAcceptedCredentialIds: ["bb"], });
signalUnknownCredential(options)
よりもこのメソッドの使用が推奨されます。signalAllAcceptedCredentials(options)
メソッドが呼び出されると、クライアントサイドの認証器は rpId と userId
を照合します。認証器は rpId と userId
に一致するすべてのローカル認証情報を検索し、その結果を allAcceptedCredentialIds
と比較します。allAcceptedCredentialIds
に含まれていないローカル認証情報がある場合、それらはローカルで削除されます(または認証器によっては非表示になります)。allAcceptedCredentialIds
に含まれるようになった場合、その認証情報は再び将来の認証セレモニーで表示されるようになります。signalAllAcceptedCredentials(options)
を使用する際、このメソッドが実行される時点で認証器が常に接続されているとは限らないことに注意してください。そのため、RP はサインインのたびに
signalAllAcceptedCredentials(options)
を実行するなど、定期的に実行してすべての認証情報を最新の状態に保つことを検討すべきです。allAcceptedCredentialIds)を指定する際、注意が必要です。このリストに含まれていない認証情報は、認証器によって不可逆的に削除または非表示にされる可能性があります。有効な認証情報が誤って除外されないよう、リストが完全であることを確認してください。もし有効な Credential
ID が誤って漏れていた場合は、できるだけ早く signalAllAcceptedCredentials(options)
に再度追加して、再び表示されるようにする必要があります(認証器がこれをサポートしている場合)。上のスクリーンショットでは、Google Chrome が削除をどのように通知しているかがわかります。WebAuthn Signal API は、デスクトップ版の Google パスワード マネージャーでテスト可能です。
WebAuthn Signal API を効果的に実装し、クライアントサイドの認証器全体でパスキーのメタデータをシームレスに同期させるために、以下の推奨事項を検討してください。
signalAllAcceptedCredentials(options)
を実行するアプローチから始める:
このアプローチにより、1つのメソッドですべてのメタデータと Credential
ID が更新され、プロセスが簡素化されます。また、デバイスやプラットフォーム間での一貫性が保たれると同時に、削除されたり古くなったりした認証情報を無効化できます。signalUnknownCredential(options)
によるリアルタイムメッセージングを活用する:
大規模な展開や即時更新が必要な場合は、signalUnknownCredential(options)
メソッドを使用したリアルタイムでの通知を検討してください。この方法は、認証情報管理の効率と正確性を高め、無効または古い認証情報が選択 UI から即座に削除されることを保証します。これらの推奨事項に従うことで、サポートが整い次第 WebAuthn Signal API を効果的に実装でき、すべてのクライアントサイド認証器でパスキーのメタデータを最新かつ一貫した状態に保つことができます。これにより、パスキーによるスムーズで安全なユーザー体験を提供できます。
WebAuthn 標準は継続的に進化しており、毎月のように機能が充実してきています。WebAuthn Signal API の導入は、クライアントサイドの認証器におけるパスキーのメタデータ管理と削除において、大きな前進と言えます。この API は、RP と認証器の間で情報を同期し、無効または古いパスキーを確実に削除するという重要なユースケースに対応しており、ユーザー体験を向上させます。
user.name や user.displayName
の問題を解決します。さらに、無効化または削除されたパスキーを削除することで、クリーンで安全な認証情報選択画面を維持するのに役立ちます。WebAuthn 標準が進化するにつれて、参加者の多様な関心によって標準の様々な部分が推進されるという恩恵を受けています。最新の拡張機能に追随し、実装が最新のベストプラクティスや標準に沿っていることを確認するためには、こうした動向に注目し続けることが重要です。WebAuthn コミュニティはイノベーションを推進し続け、認証をより安全でユーザーフレンドリーなものにしています。
Related Articles
Table of Contents