リライング パーティ(RP)は、関連する公開鍵認証情報の AAGUID を調べることで、パスキーが作成されたパスキー プロバイダを特定できます。
パスキー管理の課題
パスキーを使用するメリットの 1 つは、ユーザーが 1 つのアカウントに複数のパスキーを作成できることです。この柔軟性とパスキーの堅牢性により、ユーザーがいずれかのパスキーを紛失してアカウントにアクセスできなくなった場合でも、別のパスキーを使用して証明書利用者にログインできます。
RP で複数のパスキーを管理しているユーザーにとっての課題は、特定のパスキーのみを編集または削除する必要があるときに、正しいパスキーを特定することです。たとえば、ユーザーが使用していないパスキーを削除したい場合などです。RP は、パスキー リストにパスキーに関する情報(作成日や最終使用日など)を添付することをおすすめします。これにより、ユーザーは特定のパスキーを簡単に見つけることができます。
RP では、パスキーの作成後、または作成後にすぐに名前を指定することもできますが、多くのユーザーはそうしていません。理想的には、パスキーの名前は、クライアントから送信されたシグナルや公開鍵認証情報に含まれる情報を反映して自動的に付けられます。
ブラウザは、信頼できる当事者がパスキーに名前を付けるために使用できるユーザー エージェント文字列を提供しますが、拡張機能機能を備えた Android、iOS、デスクトップ ブラウザなどのプラットフォームでは、サードパーティのパスワード マネージャーによってパスキーを作成できます。ユーザー エージェント文字列は、必ずしも実際のパスキー プロバイダを表すものではありません。
パスキーの登録時に返される公開鍵認証情報に含まれる Authenticator Attestation Globally Unique Identifier(AAGUID)を使用すると、RP はパスキーのプロバイダを判別して、ユーザーが正しいパスキーを簡単に見つけられるようになります。
AAGUID を使用してパスキー プロバイダを特定する
AAGUID は、認証システムのモデル(認証システムの特定のインスタンスではない)を識別する一意の数値です。AAGUID は、公開鍵認証情報の認証データの一部として確認できます。
RP は AAGUID を使用してパスキー プロバイダを識別できます。たとえば、ユーザーが Android デバイスで Google パスワード マネージャーを使用してパスキーを作成した場合、RP は AAGUID "ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4"
を受け取ります。RP は、パスキーリスト内のパスキーにアノテーションを付け、Google パスワード マネージャーで作成されたことを示します。
AAGUID をパスキー プロバイダにマッピングするには、RP は AAGUID のコミュニティ提供リポジトリを使用できます。リストで AAGUID を検索すると、パスキー プロバイダ名とそのアイコンの svg データテキストを確認できます。
AAGUID の取得は、ほとんどの WebAuthn ライブラリが提供する機能です。次の例は、SimpleWebAuthn を使用したサーバーサイドの登録コードを示しています。
// Import a list of AAGUIDs from a JSON file
import aaguids from './aaguids.json' with { type: 'json' };
...
// Use SimpleWebAuthn handy function to verify the registration request.
const { verified, registrationInfo } = await verifyRegistrationResponse({
response: credential,
expectedChallenge,
expectedOrigin,
expectedRPID,
requireUserVerification: false,
});
...
const { aaguid } = registrationInfo;
const provider_name = aaguids[aaguid]?.name || 'Unknown';
まとめ
AAGUID は、パスキーを作成したパスキー プロバイダを識別する一意の文字列です。RP は AAGUID を使用して、ユーザーがパスキーを簡単に管理できるようにすることができます。AAGUID のコミュニティ提供リポジトリを使用して、AAGUID をパスキー プロバイダにマッピングできます。