← 制作実績へ戻る

制作実績|SECURITY × WEB APP

WebAuthn
認証システム倉庫

パスワードをコードへ書かず、Windows Helloを使って本人確認する PHP認証システムを制作しました。登録・ログイン・ページ保護・ログアウトまで、 ローカル環境で一連の動作を確認しています。

✓ パスキー登録 ✓ 本人認証 ✓ ページ保護 ✓ ログアウト

制作の目的

APIキーやパスワードをコードへ直接書く危険性を学んだことをきっかけに、 「自分専用のファイルやアプリを、安全な本人認証で開ける仕組み」を目標として制作しました。

顔画像を自作プログラムで判定する方式ではなく、端末のWindows Helloへ本人確認を任せ、 Webサイト側では暗号学的な証明だけを検証するWebAuthn方式を採用しています。

実装した主な機能

1

パスキー登録

Windows Helloで本人確認し、倉庫専用の新しい鍵を登録します。

2

署名検証ログイン

毎回変わるChallengeへ端末が署名し、PHP側で公開鍵を使って検証します。

3

秘密ページの保護

未認証の状態でURLを直接入力しても、入口へ戻されるよう制御しました。

認証の流れ

Challengeを発行 PHPが毎回異なる使い捨て確認番号を生成します。
端末で本人確認 Windows Helloが顔・指紋・PINなどで本人確認します。
電子署名を検証 端末の秘密鍵で作った署名を、保存済み公開鍵で確認します。
倉庫を解錠 検証成功時だけセッションを発行し、秘密ページを表示します。

今回覚えた用語

WebAuthn
(ウェブオースン)
Web上で公開鍵暗号を利用して本人認証するための標準的な仕組み。
Challenge
(チャレンジ)
認証のたびに作る使い捨ての確認番号。過去の認証結果の使い回しを防ぎます。
Credential
(クレデンシャル)
端末が作成・保持する認証情報。秘密鍵は端末から外へ出ません。
Session
(セッション)
認証済み状態をサーバー側で一時的に記憶する仕組み。

つまずいた点と解決

使用技術

安全上の配慮: このページは制作内容の紹介です。認証アプリ本体、公開鍵データ、ローカルの保存場所、 個人情報は公開していません。

次の目標

ローカル版で完成した認証の仕組みを土台に、画面デザイン、複数利用者への対応、 データベース保存、HTTPS環境での本番運用について学習を進めます。