パスキー認証に興味があるけれど、調べると難しい話が多くて混乱してしまう。そんな人のために、今回はパスキー認証に必要なものを、ユーザー側とサーバー側に分けて簡単に説明します!
スポンサーリンク
ユーザー側に必要なもの
ハードウェア
- スマホやPC:生体認証が使えるデバイスが必要です。たとえば、指紋認証や顔認証ができるiPhoneやAndroidのスマホ、またはWindowsやmacOSのPCが該当します。
- セキュアチップ:スマホやPCの中には、秘密鍵を安全に保存するための「セキュアチップ」(Secure EnclaveやTPM)が組み込まれています。これがパスキー認証の要です。
アプリ/ツール
- FIDO2対応OSとブラウザ:OSとブラウザがFIDO2やWebAuthnに対応している必要があります。iOS 16以降やAndroid 9以降などのOS、ChromeやSafariなどの最新ブラウザで使えます。
- パスキーの同期機能:iCloudやGoogleアカウント、Microsoftアカウントを使えば、パスキーを複数のデバイス間で同期させることもできます。
スポンサーリンク
サーバー側に必要なもの
ハードウェア
- 標準的なWebサーバー:特別なハードウェアは必要ありません。普段使っているサーバーでパスキー認証を導入できます。
- セキュリティ対策:SSL/TLSのような基本的なセキュリティ対策は必須です。
アプリの実装
- FIDO2/WebAuthn対応の認証機能:パスキー認証をサポートするバックエンドを準備します。公開鍵の登録や管理、ログインプロセスの実装が必要です。
- 公開鍵の保存:ユーザーの公開鍵を保存するデータベースとその管理機能も必要です。
パスキー認証の流れ — 具体的な手順
パスキー認証は、次の4つの主要なコンポーネントで成り立っています。
-
バックエンド: ユーザーの公開鍵やパスキーに関連する情報(メタデータ)を管理するサーバー。ユーザーのアカウントデータベースを保持し、認証リクエストを処理します。
-
フロントエンド: ユーザーがアクセスするウェブページの部分。ブラウザを通じてバックエンドと通信し、認証プロセスを進行させます。
-
ブラウザ: ユーザーのデバイスでJavaScriptを実行し、パスキー認証を進める役割を持ちます。ブラウザはパスキー認証に対応したAPIを使って、認証手続きを行います。
-
認証システム: パスキーを生成・保存する機能を持つシステム。これは、ユーザーのスマホやPC上で実行され、生体認証やPINコードを使って認証します。例えば、Windows Helloやスマホでの顔認証などです。
この4つのコンポーネントを使って、以下のシーケンスで認証フロー回します。
認証の流れ
-
ユーザーがフロントエンドにアクセスし、ログインしようとすると、フロントエンドはバックエンドに「パスキーで認証するためのチャレンジ」をリクエストします。
-
フロントエンドは、ブラウザ経由で
navigator.credentials.get()
を使い、パスキーによる認証を開始します。 -
ユーザーがログインフィールドにカーソルを置くと、ブラウザにパスキーを含む自動入力ダイアログが表示され、ユーザーはパスキーを選択します。
-
次に、認証ダイアログが表示され、ユーザーが指紋や顔認証、PINコードを使って自分自身を確認します。この時点で、Promise(結果)が返されます。
-
フロントエンドは、この公開鍵認証情報をバックエンドに送信し、バックエンドがデータベース内の公開鍵と照合して署名を検証します。
-
認証が成功すれば、ユーザーはログイン完了です。
まとめ
パスキー認証を導入するには、ユーザー側では対応デバイスやOS、生体認証が必要で、サーバー側ではFIDO2対応の認証機能を実装すればOKです。技術的に難しそうに見えますが、最近では多くのツールやライブラリが用意されているので、導入もスムーズに進むはずです。
0 件のコメント:
コメントを投稿