PublicKeyCredential: signalCurrentUserDetails() 静的メソッド
利用可能性は限定的
この機能はベースラインではありません。最も広く使用されているブラウザーの一部で動作しません。
Want more support for this feature? Tell us why.
安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。
signalCurrentUserDetails() は PublicKeyCredential インターフェイスの静的メソッドで、特定のユーザーが 認証依頼者 (RP) サーバー上でユーザー名や表示名を更新したことを、認証器に通知します。
これにより、認証器はユーザーアカウントの詳細情報を更新し、RP が保持する情報との同期を保つことができます。この機能は、現在のユーザーが認証されている場合(ログイン後、または RP のウェブアプリ上で資格情報に関連付けられたメタデータを変更した場合)にのみ使用すべきです。
構文
signalCurrentUserDetails(options)
引数
options-
更新されたユーザー情報を表すオブジェクトで、以下のプロパティが含まれています。
displayName-
更新されたユーザーの
displayNameを表す文字列。 name-
更新されたユーザーの
nameを表す文字列。 rpId-
シグナルを送信した
RP の IDを表す文字列。 userId-
この資格情報が関連付けられている
ユーザーの IDを表す、Base64URL で符号化された文字列。
返値
例外
このプロミスには、以下の例外で拒否されます。
SecurityErrorDOMException-
RP のドメインが有効ではありません。
TypeErrorDOMException-
credentialIdは、有効な base64url で符号化された文字列ではありません。
解説
ユーザーの認証器に格納されている 検出可能な資格情報(例えば、パスキー)に関する情報が、サーバーとの同期を失う可能性があります。この状態は、ユーザーが RP のウェブアプリ上でユーザー名や表示名を更新した際、認証器を更新しなかった場合に発生する可能性があります。
次に、ユーザーが検出可能な資格情報を使用してログインしようとすると、関連する UI 上ではまだ古いユーザー名や表示名が付いた資格情報が表示されるため、ユーザーに混乱を招く可能性があります。
この課題を避けるには、ユーザーがユーザーアカウントの詳細を更新したりログインしたりするたびに、RP ウェブアプリで signalCurrentUserDetails() を呼び出し、ユーザー情報が更新されたことを認証器に指示する必要があります。この情報の処理方法は認証器次第ですが、指定された更新内容に基づいてユーザー情報を同期することが期待されます。
例
>現在のユーザーの詳細情報のシグナル
この例では、signalCurrentUserDetail() メソッドを呼び出し、ユーザーが RP で編集したばかりの資格情報の詳細を渡します。その結果、認証器は、RP との同期が保たれるよう、自分自身で資格情報のコピーを更新する必要があります。
if (PublicKeyCredential.signalCurrentUserDetails) {
await PublicKeyCredential.signalCurrentUserDetails({
rpId: "example.com",
userId: "M2YPl-KGnA8", // base64url で符号化されたユーザー ID
name: "a.new.email.address@example.com", // ユーザー名
displayName: "Maria Sanchez",
});
} else {
// ユーザーに対し、認証器で登録情報を更新するよう促す
}
その他のサンプルコードについては、 Keep passkeys consistent with credentials on your server with the Signal API - developer.chrome.com (2024) を参照してください。
仕様書
| 仕様書 |
|---|
| Web Authentication: An API for accessing Public Key Credentials - Level 3> # dom-publickeycredential-signalcurrentuserdetails> |