パスキー認証を導入するには?— 必要なものを簡単に解説

2024年10月16日水曜日

javascript

t f B! P L

パスキー認証に興味があるけれど、調べると難しい話が多くて混乱してしまう。そんな人のために、今回はパスキー認証に必要なものを、ユーザー側とサーバー側に分けて簡単に説明します!

スポンサーリンク

ユーザー側に必要なもの

ハードウェア

  • スマホや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つの主要なコンポーネントで成り立っています。

  1. バックエンド: ユーザーの公開鍵やパスキーに関連する情報(メタデータ)を管理するサーバー。ユーザーのアカウントデータベースを保持し、認証リクエストを処理します。

  2. フロントエンド: ユーザーがアクセスするウェブページの部分。ブラウザを通じてバックエンドと通信し、認証プロセスを進行させます。

  3. ブラウザ: ユーザーのデバイスでJavaScriptを実行し、パスキー認証を進める役割を持ちます。ブラウザはパスキー認証に対応したAPIを使って、認証手続きを行います。

  4. 認証システム: パスキーを生成・保存する機能を持つシステム。これは、ユーザーのスマホやPC上で実行され、生体認証やPINコードを使って認証します。例えば、Windows Helloやスマホでの顔認証などです。

この4つのコンポーネントを使って、以下のシーケンスで認証フロー回します。

認証の流れ

パスキー認証の流れ(シーケンス図)

  1. ユーザーがフロントエンドにアクセスし、ログインしようとすると、フロントエンドはバックエンドに「パスキーで認証するためのチャレンジ」をリクエストします。

  2. フロントエンドは、ブラウザ経由でnavigator.credentials.get()を使い、パスキーによる認証を開始します。

  3. ユーザーがログインフィールドにカーソルを置くと、ブラウザにパスキーを含む自動入力ダイアログが表示され、ユーザーはパスキーを選択します。

  4. 次に、認証ダイアログが表示され、ユーザーが指紋や顔認証、PINコードを使って自分自身を確認します。この時点で、Promise(結果)が返されます。

  5. フロントエンドは、この公開鍵認証情報をバックエンドに送信し、バックエンドがデータベース内の公開鍵と照合して署名を検証します。

  6. 認証が成功すれば、ユーザーはログイン完了です。

まとめ

パスキー認証を導入するには、ユーザー側では対応デバイスやOS、生体認証が必要で、サーバー側ではFIDO2対応の認証機能を実装すればOKです。技術的に難しそうに見えますが、最近では多くのツールやライブラリが用意されているので、導入もスムーズに進むはずです。

スポンサーリンク
スポンサーリンク

このブログを検索

Profile

自分の写真
Webアプリエンジニア。 日々新しい技術を追い求めてブログでアウトプットしています。
プロフィール画像は、猫村ゆゆこ様に書いてもらいました。

仕事募集もしていたり、していなかったり。

QooQ