概要
同期パスキーを使用する場合、ユーザーはパスキー プロバイダを使用して認証します。
パスキーを作成して認証するには、ウェブの場合は WebAuthn API、Android アプリの場合は Credential Manager API を使用します。これらの 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 サーバーのコレクションを参照しています。