HTMLフォーム認証

HTMLフォーム認証は、ウェブサイトがフォームを使って、ユーザーエージェント（典型的にはウェブブラウザ）から認証情報（）を収集し、認証を行う技法である。単にフォーム認証とも呼ばれる。

 手順の概略 
典型的には、以下の手順となる。
 認証していない状態のユーザーエージェントがウェブサイトからウェブページを要求する。
 ウェブサイトは返答としてHTMLで書かれたウェブページをユーザーエージェントに渡す。このウェブページには、アカウント（ユーザー名あるいはEメールアドレスなど）・パスワードの入力を求めるフォームがあり、さらにログインや送信などと書かれたボタンが用意されている。
 利用者はユーザー名とパスワードを入力し、ボタンを押す。
 ユーザーエージェントはフォームの入力内容をウェブサーバーに送信する。
 ウェブサーバー内で実行されているプログラムはを行う。成功したら、指定のアカウントとしてのセッションが開始される。
 以後、セッションを維持する方法としては、をHTTPクッキーに保存する方法がよく用いられる。

認証の方法として、パスワード以外にさらに追加の手順を課す多要素認証としたり、WebAuthnなどパスワードを用いない方法が採用されることもある。

 コード例 (HTML) 
実際には、これに加えてクロスサイトリクエストフォージェリ (CSRF)への対策が必須である。クロスサイトリクエストフォージェリ#対策などを参照のこと。
<form method="POST" action="/login">
  <label>ユーザー名: <input type="text" name="username" autocomplete="username" required></label>
  <label>パスワード: <input type="password" name="password" autocomplete="current-password" required></label>
  <button type="submit">ログイン</button>
</form>

 ウェブサーバーにおけるサポート 
フォーム認証は、一般的にウェブアプリケーションフレームワークによって提供される機能であるが、ウェブサーバーが機能を提供する例もある。
 Apache HTTP Server: mod_auth_form

 関連項目 
 認証
 HTTP認証
 Basic認証
 Digest認証
 ログイン
 ソーシャル・ログイン

 外部リンク 
 security - The definitive guide to form-based website authentication - Stack Overflow

Category:認証技術
Category:ウェブ技術