← PC・IT用語集へ戻る

Basic認証

Basic Authentication
security web beginner
Webサーバーの最も基本的な機能を利用して、ウェブページに簡易的なIDとパスワードの入力画面を表示する認証方式。
Basic認証 (Basic Authentication)

概要(サマリー)

Basic認証(ベーシック認証)とは、ウェブサイトを閲覧しようとしたときに、ブラウザが立ち上げる最もシンプルで基本的な「IDとパスワード」の確認機能である。

たとえば、まだ一般公開したくない開発中のホームページや、社内の関係者だけに見せたい特定のフォルダがあるとする。
Basic認証を設定しておくと、そのURLを開いた瞬間にブラウザ標準の小さな入力欄が表示され、正しいIDとパスワードを入れないと先へ進めなくなる。
特別な会員ページや複雑なデータベースログインの仕組みを作らなくても、サーバーの簡単な設定だけで素早くウェブサイト全体に鍵をかけられるため、開発現場で頻繁に使われている。

詳細解説

Basic認証の仕組みと挙動

Basic認証は、HTTPプロトコル(Web通信のルール)の基本仕様の一部として定義されている。

  1. アクセス要求: ユーザーが鍵のかかったページにアクセスする。
  2. 認証要求(401エラー): サーバーは「401 Unauthorized(未認証)」というステータスコードとともに、「認証が必要である」という情報をブラウザに返す。
  3. 入力ダイアログの表示: ブラウザはこれを受け取ると、OSやブラウザ標準のID・パスワード入力画面を画面上にポップアップ表示する。
  4. 情報の送信: ユーザーが入力を終えると、ブラウザはIDとパスワードを組み合わせ、それを「Base64」という簡単な規則で変換(エンコード)して、リクエストヘッダーに載せてサーバーに再送信する。
  5. 認証完了: サーバー側で情報が一致すれば、通常通りページが表示される。

Basic認証を設定する方法

一般的には、Apacheサーバーであれば設定ファイルである <a class="internal-link" href="https://noveblo.com/glossary/htaccess.html" target="_blank" rel="noopener noreferrer">.htaccess</a> と、パスワード情報を記録した .htpasswd というファイルを用意して設定する。

.htaccess の記述例

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /absolute/path/to/.htpasswd
Require valid-user

メリットとデメリット

  • メリット:
  • プログラム(PHPJavaScriptなど)を1行も書くことなく、サーバーの設定ファイルだけで手軽に導入できる。
  • 画像、PDF、CSSなどのファイル単体に対しても個別に鍵をかけられる。
  • デメリット:
  • 送信されるIDとパスワードは暗号化されておらず、単にBase64で文字列変換されているだけである。そのため、SSL/TLS(HTTPS)での暗号化通信を行っていない場合、ネットワーク上で簡単に盗聴されてしまう。
  • デザインのカスタマイズが一切できない。
  • ログアウトの処理(鍵を閉じる動作)をウェブサイト側から提供するのが難しい。

AIコーディングとの関係

AIに「開発中のWebサイトに簡易的なパスワード制限をかけたい」と相談すると、このBasic認証の設定ファイルを生成してもらえる。
設定する際は、パスワードファイル(.htpasswd)の絶対パス(サーバー上での正確な住所)が必要になるため、その調べ方もAIに聞いておくとスムーズである。

AIへ指示する際のポイント

  • 「Apacheサーバーで、特定のフォルダにBasic認証を設定したい。.htaccess ファイルと、ユーザー名『admin』、パスワード『password123』の .htpasswd の記述例を書いて」
  • 「Next.js(Node.js)のミドルウェア機能を使って、プログラム側でBasic認証を実装する方法を教えて」

よくある勘違い

ログインフォームによるパスワード認証と同じ?

異なる。
会員サイトなどの「ログインフォーム」は、HTMLで記述した入力欄に情報を打ち込み、JavaScriptやバックエンドプログラムがデータベースと照合してセッションやCookieを発行する。
一方、Basic認証はブラウザのシステム自体が直接サーバーと対話し、ページ読み込みの通信ヘッダーだけでユーザー確認を完結させる。

Basic認証を設定していればセキュリティは万全?

万全ではない。前述の通り、Basic認証で送られるID・パスワードは暗号化されていないため、HTTPS化(通信の暗号化)がされていない環境での使用は危険である。また、手軽な分、高度な攻撃に対しては脆弱であり、あくまで「本番公開前の仮の鍵」「一時的な目隠し」として使用するのが基本である。

Basic認証をかけた後、ブラウザを閉じれば自動でログアウトされる?

必ずしもそうではない。ブラウザはBasic認証の認証情報をセッション中キャッシュとして保持する。
ブラウザを完全に閉じればキャッシュが消えるケースが多いが、ブラウザの種類や設定によっては再起動後も認証情報が残ることがある。
サイト側のプログラムからログアウトボタンを提供することが難しいのもBasic認証の欠点の一つであり、本番の会員サイトに採用しにくい理由でもある。

まとめ

  • Basic認証は、HTTPの標準機能を用いた、ブラウザが直接ポップアップを表示する最もシンプルなユーザー確認方式。
  • .htaccess と .htpasswd を使うことで、プログラム不要でフォルダ全体にアクセス制限をかけられる。
  • 送信データは暗号化されないため、必ず SSL/TLS(HTTPS)通信と併用する必要がある。
  • AIを活用すれば、面倒なサーバーの絶対パスの調査や、設定ファイルのコード生成を迅速に行える。

情報ソース

より詳しくAIに聞いてみよう

  • Windowsのローカル環境XAMPP)で、特定のディレクトリにBasic認証を設定する具体的な手順を教えてください。
  • Basic認証を設定する際の「.htpasswd」ファイル内のパスワード暗号化文字列(ハッシュ値)を、コマンドラインで作成する方法を教えてください。
  • nginxサーバー(Linux)でBasic認証を設定するための設定ファイル(nginx.conf)の書き方を教えてください。
  • Basic認証が設定されたWebサイトから、一度ログインした後にログアウトする(ブラウザのキャッシュをクリアする)にはどうすればよいですか?
  • APIにプログラム(Curlコマンドなど)からアクセスする際、Basic認証のIDとパスワードをどのようにリクエストヘッダーに含めて送信すればよいですか?