Basic認証とは?仕組みから.htaccess・.htpasswdの設定方法まで初心者向けに解説




はじめに

Web制作やサーバー運用をしていると、「テスト環境にBasic認証を設定してください」と言われることがあります。

私も実務でWordPressのステージング環境や公開前サイトにBasic認証を設定する機会がありました。

しかし初めて聞いたときは、

  • Basic認証とは何なのか
  • .htaccessと.htpasswdの違い
  • なぜ2つのファイルが必要なのか

がよく分かりませんでした。

この記事ではBasic認証の仕組みから実際の設定方法まで解説します。


Basic認証とは

Basic認証とは、Webサイトにアクセスする際にユーザー名とパスワードの入力を求める認証方式です。

サイトへアクセスすると次のようなダイアログが表示されます。

正しい情報を入力した場合のみページを閲覧できます。


なぜ使うのか

主な利用シーンは以下です。

  • 公開前サイトの閲覧制限
  • テスト環境の保護
  • 社内向けサイトのアクセス制限
  • 一時的な会員専用ページ

例えば開発中のWordPressサイトが検索エンジンに登録されてしまうと問題になることがあります。

そのため公開前はBasic認証で保護するケースがよくあります。


Basic認証の仕組み

Basic認証は非常にシンプルな仕組みです。

① ブラウザがページへアクセス

        ↓

② サーバーが認証を要求

        ↓

③ ユーザーがID・パスワード入力

        ↓

④ サーバーが .htpasswd を確認

        ↓

⑤ 一致したらページ表示

イメージとしては受付で入館証を確認するようなものです。


.htaccessとは

.htaccess はApacheの設定ファイルです。

ディレクトリ単位でサーバー設定を変更できます。

例えば以下のような用途があります。

  • Basic認証
  • リダイレクト
  • IP制限
  • エラーページ設定

今回のBasic認証では

「このフォルダに認証をかける」

という設定を書きます。


.htpasswdとは

.htpasswd はユーザー名とパスワードを保存するファイルです。

test:$apr1$xxxxxxxxxxxxxxxx

パスワードはそのまま保存されず、ハッシュ化されます。

そのため第三者がファイルを見ても元のパスワードは分かりません。

 

Basic認証では、.htaccessと.htpasswdが連携して認証を行います。

その関係を図で表すと以下のようになります。

※本記事の図解は生成AIを使用して作成しています。

Basic認証に必要なファイル

Basic認証では次の2つを使用します。

ファイル 役割
.htaccess 認証を有効化する
.htpasswd ID・パスワードを保存する

役割を分けることでセキュリティを高めています。


Apacheでの設定方法

.htpasswdを作成

Linuxの場合

htpasswd -c .htpasswd testuser

実行するとパスワード入力を求められます。


.htaccessを作成

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /home/user/.htpasswd
Require valid-user

各設定の意味

AuthType Basic

AuthType は認証方式を指定する設定です。

Basic認証以外にも認証方式は存在しますが、今回利用するのはBasic認証のため、以下のように指定します。

AuthType Basic

この設定を書くことで、ブラウザにユーザー名とパスワードの入力画面が表示されるようになります。


AuthName

AuthName は認証ダイアログに表示されるメッセージです。

AuthName "Restricted Area"

例えば上記のように設定すると、認証画面に「Restricted Area」という名称が表示されます。

利用者向けに

  • 管理者専用ページ
  • テスト環境
  • 関係者のみ閲覧可能

など分かりやすい名前を付けることも可能です。


AuthUserFile

AuthUserFile.htpasswd ファイルの保存場所を指定します。

AuthUserFile /home/user/.htpasswd

Basic認証では、ユーザー名やパスワードを .htpasswd に保存します。

サーバーはこのファイルを参照して認証を行うため、正しい場所を指定しないと認証が動作しません。

なお、ここは相対パスではなく絶対パスで指定する必要があります。

実務ではパス指定ミスによって

500 Internal Server Error

になるケースもよくあります。


Require valid-user

Require valid-user は、登録済みユーザーのアクセスを許可する設定です。

Require valid-user

この設定を記述すると、.htpasswd に登録されているすべてのユーザーがアクセス可能になります。

例えば

testuser
admin
sample

の3ユーザーが登録されている場合は、どのユーザーでも認証を通過できます。


4つの設定の役割まとめ

ここまで解説した4つの設定をまとめると、以下のようになります。

Basic認証ではそれぞれ異なる役割を持っており、組み合わせることでアクセス制限を実現しています。

設定 役割
AuthType Basic Basic認証を有効にする
AuthName 認証画面の表示名
AuthUserFile .htpasswdの保存場所
Require valid-user 登録済みユーザーを許可

実際の記述例

実務でよく見る形です。

AuthType Basic
AuthName "Login Required"
AuthUserFile "/home/sample/.htpasswd"
Require valid-user

この設定を対象ディレクトリに配置します。

ブラウザでの確認方法

URLへアクセスします。

https://yyoshiblog.com/test/

すると認証画面が表示されます。

正しいID・パスワード:認証成功

誤ったID・パスワード:401 Unauthorized

となります。


注意点

Basic認証は非常に手軽ですが、通信内容自体は暗号化されません。

そのためHTTPSと組み合わせて利用することが重要です。

現在はほとんどのサイトがHTTPS対応しているため、

Basic認証を利用する場合は必ずSSL化された環境で運用しましょう。


まとめ

今回はBasic認証について解説しました。

  • Basic認証はIDとパスワードでアクセス制限を行う仕組み
  • .htaccessで認証設定を行う
  • .htpasswdで認証情報を管理する
  • テスト環境や公開前サイトでよく利用される
  • HTTPSとの併用が必須

実務でも頻繁に利用されるため、Web制作やサーバー運用を行う方はぜひ覚えておきましょう。

コメント

タイトルとURLをコピーしました