AAGUID を使用してパスキーのプロバイダを確認する

証明書利用者(RP)は、関連する公開鍵認証情報の AAGUID を調べることで、パスキーが作成されたパスキー プロバイダを特定できます。

パスキーの管理に関する課題

パスキーを使用するメリットの 1 つは、ユーザーが 1 つのアカウントに複数のパスキーを作成できることです。この柔軟性とパスキーの堅牢性により、ユーザーがいずれかのパスキーを紛失してアカウントにアクセスできなくなった場合でも、別のパスキーを使用して証明書利用者にログインできます。

RP で複数のパスキーを管理するユーザーにとって、特定のパスキーを編集または削除する必要がある場合に、適切なパスキーを特定することは困難です。たとえば、ユーザーが使用していないパスキーを削除したい場合などです。RP は、パスキーのリストに作成日や最終使用日などのパスキーに関する情報を追加することをおすすめします。これにより、ユーザーは特定のパスキーを見つけやすくなります。

RP では、パスキーの作成後、または作成後にすぐに名前を指定することもできますが、多くのユーザーはそうしていません。理想的には、パスキーには、クライアントから送信されたシグナルまたは公開鍵認証情報に含まれる情報を反映した名前が自動的に付けられます。

ブラウザには、証明書利用者がパスキーに名前を付けるために使用できるユーザー エージェント文字列が用意されていますが、拡張機能機能を備えた Android、iOS、パソコンのブラウザなどのプラットフォームでは、サードパーティのパスワード マネージャーでパスキーを作成できます。ユーザー エージェント文字列は、実際のパスキーのプロバイダを必ずしも表しているとは限りません。

パスキーの登録時に返される公開鍵認証情報に含まれる Authenticator Attestation Globally Unique Identifier(AAGUID)を使用すると、RP はパスキーのプロバイダを判別して、ユーザーが正しいパスキーを簡単に見つけられるようになります。

AAGUID でパスキーのプロバイダを特定する

AAGUID は、認証システムのモデルを識別する一意の番号です(認証システムの特定のインスタンスではありません)。AAGUID は、公開鍵認証情報の認証システム データの一部として確認できます。

<ph type="x-smartling-placeholder">
</ph> 含まれている認証システムデータ(証明済みの認証情報データを含む)と構成証明ステートメントを示す構成証明オブジェクトのレイアウト。 <ph type="x-smartling-placeholder">
</ph> AAGUID は認証システムのデータで確認できます。

RP は、AAGUID を使用してパスキー プロバイダを識別できます。たとえば、ユーザーが Google パスワード マネージャーを使用して Android デバイスでパスキーを作成すると、RP は "ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4" の AAGUID を受け取ります。RP は、パスキーリスト内のパスキーにアノテーションを付けて、Google パスワード マネージャーで作成されたことを示すことができます。

<ph type="x-smartling-placeholder">
</ph> セキュリティ設定ページのパスキー設定には、各パスキーの詳細情報が表示されます。 <ph type="x-smartling-placeholder">
</ph> パスキー管理 UI の例。

AAGUID をパスキー プロバイダにマッピングするために、RP は AAGUID のコミュニティ提供リポジトリを使用できます。リストで AAGUID を検索すると、パスキー プロバイダ名と、そのアイコン svg データテキストを見つけることができます。

<ph type="x-smartling-placeholder">

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 をパスキー プロバイダにマッピングできます。