WebAuthn Signal APIが、クライアントサイドの認証器でパスキーのシームレスな削除とメタデータ(user.name、user.displayName)の更新をどのように可能にするかを解説します。
Vincent
Created: August 8, 2025
Updated: August 8, 2025
See the original blog version in English here.
Our mission is to make the Internet a safer place, and the new login standard passkeys provides a superior solution to achieve that. That's why we want to help you understand passkeys and its characteristics better.
パスキーのエコシステムは進化を続けています。その変化を促進するため、基盤となるWebAuthn標準も急速に進化しています。新しい機能は、多くの場合、まずGitHubの技術的な解説書から始まり、十分に議論された後、標準へのプルリクエストへと発展します。最近、こちらのプルリクエストがWebAuthn Signal APIとして標準ドラフトに追加されました。この記事では、以下の内容について解説します。
2025年1月時点の更新情報として、WebAuthn Signal APIはChrome 132からデフォルトで有効になっています。以前はReporting APIという名称でしたが、同名の別のAPIとの競合を避けるために改名されました。
WebAuthn Signal APIは、クライアントサイドでのパスキー管理に関する特定のユースケースに対応します。具体的には、リライングパーティ(RP)と、クライアントサイドのオペレーティングシステムの一部である認証器との間で情報を同期させるのに役立ちます。以下のような重要なユースケースがあります。
パスキーが作成される際、user.id
、user.name
、user.displayName
といったいくつかの情報が含まれます。パスキー自体は、一意のCredential IDによって識別されます。
user.id
は、パスキーとユーザーアカウントを実際に照合するために不可欠です。以下の図は、どの情報がどのフィールドに通常保存されるかを示す、典型的でシンプルなデータベース構造です。
user.name
(多くはメールアドレス)とuser.displayName
(より親しみやすく読みやすい名前)は、ユーザーが選択UIで自分のアカウントを識別するのに役立ちますが、パスキーとアカウントの実際の関連付けはuser.id
と**Credential ID**によって維持されることを理解することが重要です。
user.id
を使用して一意に識別され、アカウントと照合されます。問題の1つは、メールアドレスであるuser.name
が変更されたときに発生します。現在、この変更をクライアントサイドの認証器で直接更新する仕組みはありません。user.name
は、ユーザーがメールアドレスを更新した場合など、さまざまな理由で変更される可能性があります。サーバー側でアカウントのメタデータが変更されたにもかかわらず、古いuser.name
が資格情報選択UIに表示され続け、ユーザーの混乱を招く可能性があります。
この問題の回避策は、更新されたuser.name
と同一のuser.id
で新しいパスキーを作成し、既存のパスキーを上書きすることです。しかし、このアプローチはいくつかの理由で不便です。
user.id
はリライングパーティIDごとに1つのパスキーしか持てないため、古いパスキーを新しいものに置き換える必要があり、余分なステップとなります。メールアドレスや電話番号などの識別子は定期的に変更される可能性があります。user.name
とuser.displayName
を認証器で直接更新する簡単な方法がないと、ユーザーは古いメールアドレスに関連付けられたパスキーを選択しなければならないという根強い問題に直面するかもしれません。この状況は、パスキーが目指すシームレスな体験を損ないます。WebAuthn Signal APIは、新しいパスキーを作成することなく、リライングパーティがパスキーのメタデータの更新を報告できるようにすることで、この問題を解決することを目指しています。Signal APIの実装方法を説明する前に、それが対応する2つ目の重要なユースケースを見ていきましょう。
もう1つの重要なユースケースは、クライアントサイドの認証器でのパスキーの削除です。時間が経つにつれて、ユーザーはパスキー管理リストから資格情報を失効させたり、アカウントを削除したりすることがあります。その際、これらの資格情報が将来の資格情報選択UI(条件付きUI / パスキーの自動入力)に表示されないように、クライアントサイドの認証器から削除されるようにすることが必要になります。
この機能の必要性は、いくつかのシナリオで生じます。
ユーザーの視点からすると、上記のようなダイアログでアカウント設定を削除しても、このクライアント上のパスキーが削除されないことは理解しがたいです。
クライアントサイドでパスキーを直接削除する方法がないと、これらの古くなった、または無効な資格情報が選択UIを煩雑にし続け、混乱を招きます。ユーザーはもはや有効でないパスキーを見て使用しようとし、認証の失敗やユーザーエクスペリエンスの低下につながる可能性があります。
WebAuthn Signal APIを実装するには、機能が正しく安全に統合されるように、いくつかのステップと考慮事項が必要です。Signal APIを使用すると、リライングパーティ(RP)はクライアントサイドの認証器でパスキー資格情報を更新または削除できます。このセクションでは、実装のための主要な考慮事項と手順を概説します。
WebAuthn Signal APIを実装する際には、以下の考慮事項を念頭に置くことが重要です。
プライバシーの保護: WebAuthn Signal APIは、WebAuthnの基盤の1つであるユーザーのプライバシーを保護するように設計されています。これは、要求された変更が処理されたかどうかについてRPにフィードバックが提供されないことを意味します。APIは、資格情報の状態に関する情報の漏洩を防ぐために、静かに動作します。
認証器の可用性: WebAuthn Signal APIの有効性は、認証器の可用性に依存します。これには、物理的な可用性(例:セキュリティキーの存在)とソフトウェアのサポート(例:ブラウザとオペレーティングシステムの互換性)の両方が含まれます。認証器がアクセス可能で、生体認証を必要とせずに必要な操作をサポートしている場合にのみ、ブラウザはアクションを実行できます。
ドメインの制限: APIは、特定のドメインに関連付けられたリライングパーティのみが、そのドメインに関連する資格情報の変更を要求できるようにします。これは、第三者による不正な変更を防ぐためのセキュリティ対策です。
キーとしてのCredential ID: パスキーを参照する際、Credential IDはWebAuthn Signal APIが使用する主キーです。このIDは、クライアントサイドの認証器でパスキーを一意に識別します。APIを使用すると、RPはパスキーに関連付けられたメタデータを変更したり、特定のパスキーにアクセスできなくすべきであることを通知したりできますが、それはCredential IDを介してのみです。特定のCredential IDを認証器が知らない場合、それは静かに無視されます。
これらの考慮事項は、WebAuthn Signal APIが正しく機能するための最も重要な側面を理解するために不可欠です。
WebAuthn Signal APIは、リライングパーティ(RP)がクライアントサイドの認証器でパスキーに関連付けられたメタデータを更新するための合理化されたメカニズムを提供します。これは、ユーザーが不必要に新しいパスキーを作成することなく、資格情報選択UIで正確かつ最新の情報を確認できるようにするために特に重要です。APIがこれをどのように可能にするかを以下に示します。
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", // user handle, base64url. name: "New user name", displayName: "New display name", });
ローカルメタデータの更新: rpId
とuserId
に一致する、ローカル(認証器上)で利用可能な資格情報を探します。一致するすべての資格情報について、認証器は資格情報のname
とdisplayName
を更新します。
プライバシーの保護: このプロセスはプライバシーを保護するように設計されています。Signal APIは、更新が正常に処理されたかどうかについてRPにフィードバックを提供しないため、資格情報の状態に関する情報の漏洩を防ぎます。
デバイス間での一貫性: signalCurrentUserDetails(options)
メソッドを定期的に実行することで、RPはユーザーが認証する可能性のあるさまざまなデバイスやプラットフォーム間でパスキーのメタデータの一貫性を確保できます。このアプローチにより、古くなった、または不正確な情報が資格情報選択UIに表示される可能性が減少します。
上のスクリーンショットでは、Google Chromeがユーザーにこのような更新をどのように通知するかがわかります。WebAuthn Signal APIはChrome 130の一部であり、試験運用版のウェブ プラットフォームの機能を有効にすると、デスクトップのGoogleパスワードマネージャーでテストできます。
WebAuthn Signal APIは、リライングパーティ(RP)がクライアントサイドの認証器からのパスキーの削除を通知するためのメカニズムを提供します。これは、古くなった、または無効な資格情報が資格情報選択UIに表示されないようにし、合理化された安全なユーザーエクスペリエンスを維持するために不可欠です。パスキーをローカルで削除するには、signalUnknownCredential(options)
とsignalAllAcceptedCredentials)(options)
の2つのメソッドがあります。前者はユーザーが認証されていない状況で使用でき、後者はユーザーが認証されている場合に使用できます。したがって、プライバシー上の理由から後者の方が推奨されます。
2つのメソッドの仕組みは次のとおりです。
signalUnknownCredential(options)
メソッドには、rpId
(リライングパーティID)とcredentialId
(削除する資格情報の一意の識別子)が含まれます。PublicKeyCredential.signalUnknownCredential({ rpId: "example.com", credentialId: "aabbcc", // credential id the user just tried, base64url });
メソッドの呼び出し: RPは、資格情報を削除すべきだと検出したらいつでもこのメソッドを呼び出します。これは、無効な資格情報での認証試行の直後、アカウント削除時、またはユーザーがアカウント設定を通じて資格情報を失効させたときなどです。
メソッドの処理: signalUnknownCredential(options)
メソッドが呼び出されると、クライアントサイドの認証器は、指定されたrpId
とcredentialID
に一致する資格情報を探し、除外しようとします。認証器の機能に応じて、資格情報は削除されるか、将来の認証セレモニーで資格情報を非表示にするための認証器固有の手順が採用されます。
signalAllAcceptedCredentials(options)
メソッドには、rpId
(リライングパーティID)、userId
、および有効なCredential IDのリストallAcceptedCredentialIds
(保持すべき資格情報の一意の識別子のリスト)が含まれます。PublicKeyCredential.signalAllAcceptedCredentials({ rpId: "example.com", userId: "aabbcc", // user handle, base64url. allAcceptedCredentialIds: ["bb"], });
メソッドの呼び出し: RPは、資格情報を削除すべきだと検出し、有効な資格情報のリストを通知する必要がある場合にこのメソッドを呼び出します。資格情報を削除するには、signalUnknownCredential(options)
よりもこのメソッドが推奨されます。
メソッドの処理: signalAllAcceptedCredentials(options)
メソッドが呼び出されると、クライアントサイドの認証器はrpId
とuserId
を照合します。認証器は、rpId
とuserId
に一致するすべてのローカル資格情報を検索します。その結果をallAcceptedCredentialIds
と比較します。allAcceptedCredentialIds
に含まれていないローカル資格情報がある場合、それらの資格情報はローカルで削除されます(または認証器に応じて非表示になります)。
資格情報の再表示: (認証器によっては)資格情報が非表示にされているだけで、今回allAcceptedCredentialIds
に含まれている場合、それらの資格情報は将来の認証セレモニーで再び表示されるようになります。
役立つヒント:
signalAllAcceptedCredentials(options)
を使用する場合、このメソッドが実行されるときに認証器が常に接続されているとは限らないことに注意することが重要です。そのため、リライングパーティは、すべての資格情報が最新であることを保証するために、サインインごとなど、定期的にsignalAllAcceptedCredentials(options)
を実行することを検討するかもしれません。allAcceptedCredentialIds
)を指定する際に注意が必要です。このリストに含まれていない資格情報は、認証器によって非表示または削除される可能性があり、元に戻せない場合もあります。有効な資格情報が誤って省略されるのを防ぐために、リストが完全であることを確認することが不可欠です。有効な資格情報IDが誤って除外された場合は、認証器がこれをサポートしていると仮定して、できるだけ早くsignalAllAcceptedCredentials(options)
に再追加して、再び表示されるようにする必要があります。上のスクリーンショットでは、Google Chromeが削除をどのように通知するかがわかります。WebAuthn Signal APIはChrome 132の一部であり、デスクトップのGoogleパスワードマネージャーでテストできます。
WebAuthn Signal APIを効果的に実装し、クライアントサイドの認証器間でパスキーメタデータのシームレスな同期を確保するために、以下の推奨事項を検討してください。
signalAllAcceptedCredentials(options)
アプローチから始める: このアプローチは、すべてのメタデータと資格情報IDが単一のメソッドで更新されることを保証し、プロセスを簡素化し、デバイスやプラットフォーム間での一貫性を維持し、同時に削除されたまたは古い資格情報を無効化します。signalUnknownCredential(options)
によるリアルタイムメッセージング: 大規模なデプロイメントや即時の更新が必要な場合は、signalUnknownCredential(options)
メソッドによるリアルタイムメッセージングの使用を検討してください。このメソッドは、資格情報管理の効率と正確性を向上させ、無効または古い資格情報が選択UIから迅速に削除されることを保証します。これらの推奨事項に従うことで、WebAuthn Signal APIがサポートされ次第、効果的に実装でき、パスキーのメタデータがすべてのクライアントサイドの認証器で最新かつ一貫性を保ち、それによってパスキーのためのスムーズで安全なユーザーエクスペリエンスを提供できます。
WebAuthn標準は継続的に進化しており、月単位で機能が豊富になっています。WebAuthn Signal APIの導入は、クライアントサイドの認証器でのパスキーのメタデータ管理と削除において大きな一歩です。このAPIは、リライングパーティ(RP)と認証器との間で情報を同期させ、無効または古いパスキーを削除することでユーザーエクスペリエンスを向上させるという重要なユースケースに対応します。
user.name
やuser.displayName
情報に関する問題が解決されます。さらに、失効または削除されたパスキーを削除することで、クリーンで安全な資格情報選択インターフェースを維持するのに役立ちます。WebAuthn標準が進化するにつれて、標準のさまざまな部分を前進させる参加者の多様な関心事から恩恵を受けています。これらの動向に注目することは、最新の機能強化について常に最新の情報を入手し、実装が最新のベストプラクティスと標準に沿っていることを確認するために不可欠です。WebAuthnコミュニティは革新を推進し続け、認証をより安全でユーザーフレンドリーなものにしています。
Enjoyed this read?
🤝 Join our Passkeys Community
Share passkeys implementation tips and get support to free the world from passwords.
🚀 Subscribe to Substack
Get the latest news, strategies, and insights about passkeys sent straight to your inbox.
Related Articles
Table of Contents