概要
同期されたパスキーを使用する場合、ユーザーはパスキー プロバイダを使用して認証を行います。
パスキーを作成して認証するには、WebAuthn API(ウェブの場合)または Credential Manager API(Android アプリの場合)を使用します。これらの API は、クライアントとパスキー プロバイダ間の通信を処理します。
これらの API はウェブページや Android アプリなどのクライアントから呼び出されますが、認証のユースケースを完了するには、残りの機能をサーバーに実装する必要があります。
パスキーの実装は、次の 2 つの機能で構成されます。
- パスキーの登録。WebAuthn API または Credential Manager API を使用して、ユーザーがパスキーを作成できるようにします。関連する公開鍵をサーバーに保存する。
- パスキーによる認証。サーバーから認証用チャレンジを取得し、WebAuthn API または Credential Manager API を使用して、ユーザーがパスキーでこのチャレンジに署名できるようにします。サーバーで署名を検証します。署名が有効な場合は、ユーザーを認証します。
サーバーサイドのライブラリ
サーバーサイドのパスキー機能をゼロから実装することもできますが、代わりにライブラリを使用することをおすすめします。
パスキーの作成と認証をサポートするサーバーは、FIDO2 サーバー(略して FIDO サーバー)と呼ばれます。ここでは、パスキーのサポートを実装するサーバーサイド ライブラリを FIDO サーバーサイド ライブラリと呼びます。
図書館を使用する理由
FIDO サーバーサイド ライブラリの使用には、いくつかの利点があります。
- 時間と開発者のエクスペリエンス。WebAuthn の仕様は複雑です。FIDO サーバーサイド ライブラリは、パスキーを実装するためのシンプルな API を提供できるため、時間と開発リソースを節約できます。
- メンテナンスのしやすさ。WebAuthn の仕様は変更される可能性があります。積極的にメンテナンスされているライブラリの最新バージョンを使用すると、実装を最新の状態に保つことができます。
- セキュリティとコンプライアンス。パスキーの実装を WebAuthn の仕様とそのセキュリティ要件を満たす必要があります。FIDO サーバーサイド ライブラリを使用すると、実装の安全性を維持し、仕様に準拠できます。サービスや業界によっては、認証に特定のセキュリティ標準の使用を義務付ける規制が適用される場合もあります。
可能であれば、プロダクトが依存しているオープンソース プロジェクトを資金面でサポートすることを検討してください。
ライブラリ
- Awesome-webauthn GitHub リポジトリには、コミュニティでキュレートされたサーバーサイド ライブラリのリストが含まれています。JavaScript と TypeScript、Go、Python などのライブラリがあります。
- ライブラリのコレクションは passkeys.dev で入手できます。これは W3C WebAuthn Adoption Community Group によって管理されています。
- FIDO Alliance は、FIDO2 サーバーのコレクションを参照します。