Twitterでブログ更新情報を配信中

ベーシック認証方式でアクセス許可!「.htaccess」と「.htpasswd」の正しい書き方

会員制サイトや公開前のサイトなど、特定のユーザーに接続を許可したいときは「ベーシック認証」を使います。

.htaccessによるアクセス制限もありますが、サイト管理者数名を想定した運用のため、今回のような場合は、別途、認証画面を用意する方法がスムーズです。

①と②を予定したサイト制作は、本記事に適したケースと考えられます。

  1. 一定数のユーザー数がいる
  2. 特定のページ(ディレクトリ)のみ制限したい

ログイン画面などの制限を目的としたセキュリティ対策は、こちらの記事をご覧ください。

【WordPress】「.htaccess」でセキュリティ強化!ログイン画面をアクセス制限する

ベーシック認証とは

Basic認証とは、通信プロトコルであるHTTPが用意している認証方式のひとつです。最も基本的な認証の仕組みとして「基本認証」と呼ばれています。

認証には「Base64」という64種類の英数字と記号を用いた形式が使われます。「ユーザーID:パスワード」と組み合わされた情報が、Base64でエンコード(変換)し送信するシステムです。

Webサーバーやブラウザに幅広く対応しており、設定が簡単なことからアクセス制限に多く取り入れられています。

一方で、SSL化されていない「HTTP」のままで認証を行うと、暗号化されていない状態でパスワードを扱うことになります。「HTTP」で入力されたサイトにも同じことが言えます。

悪意のあるユーザーに読み取られる危険があるため「HTTP(s)」と「ベーシック認証」の環境を揃えた上で導入するようにしてください。

.htaccessから設定

用意するファイルは「.htaccess」と「.htpasswd」の2つ。それぞれの書き方を確認します。

.htaccessの書き方

アクセス制限したいディレクトリに「.htaccess」を設置します。既にある場合は以下の内容を最後に追記します。

AuthType Basic
AuthName "Basic authentication."
AuthUserFile /path/.htpasswd
require valid-user
<Files ~ "^.(htpasswd|htaccess)"$>
deny from all
</Files>

AuthType

ベーシック認証方式をとるため、「Basic」としています。

AuthType Basic

AuthName

認証時のダイアログに表示する文章を指定します。日本語は避け半角英数字を使い、ダブルクォートで囲みます。

AuthName "Basic authentication."

AuthUserFile

ルートディレクトリから「.htpasswd」までのパスを指定します。

AuthUserFile /path/.htpasswd

パスを調べるときは任意の名前のPHPファイルを以下の内容で作成し、調べたいディレクトリに設置します。

<?php echo __FILE__; ?>

アドレスバーに拡張子まで入力し、表示されたパスを/path/にペーストしてください。

https://サイトURL/ファイル名.php

require

ユーザーID、パスワードで認証された全てのユーザーのアクセスを許可しています。

require valid-user

特定のユーザーに絞りたいときは「require user ID」とします。IDは「.htpasswd」に記述したものです。

Files

「.htpasswd」と「.htaccess」へのアクセスを全て拒否する記述です。これにより外部からの書き換えは不可となります。

<Files ~ "^.(htpasswd|htaccess)"$>
deny from all
</Files>

.htpasswdの書き方

ユーザーID:パスワードの順に書いていきます。パスワードは通信内容盗み見られる危険があるため、専用ツールで暗号化を行いますLUFTTOOLSなどを利用しましょう。

test:Ha6hpFqjX2kag

ベーシック認証時に入力するパスワードは「生成前のパスワード」です。

ファイルを設置

「.htpasswd」と「.htaccess」を任意の場所に設置後、サイトにベーシック認証のダイアログが表示されます。生成前のパスワードを入力し、ページにアクセスできればOKです!

.htpasswdと.htaccessを設置

エラーの場合

文法に誤りがあるときは以下のような画面になります。パスなどの入力情報を見直しましょう。

エラー表示

サーバーから設定(簡単な方法)

サーバーにある「アクセス制限」をクリックします。

サーバーのアクセス制限を選択

対象のドメインを選択し、アクセス制限したいディレクトリを「ON」にします。制限解除するときは「OFF」にして「設定する」。

アクセス制限をON

つづいて「ユーザー設定」でベーシック認証時に入力する情報を設定します。

ユーザー設定を選択

次の画面で「ユーザーID」と「パスワード」を決定します。完了後「確認画面へ進む」。

ユーザーIDとパスワードを設定

設定した対象ドメインにアクセスすると認証ダイアログが表示されます。ここで設定した「ユーザーID」と「パスワード」を入力します。

ベーシック認証ダイアログ

ベーシック認証の導入方法は2つ。「.htaccess」と「.htpasswd」のファイルに直接記述する方法、そしてサーバーから操作する方法のいずれかになります。

サーバー各社の管理画面や操作には違いがあるため、直接記述する方法を覚えておくと契約を変えたとしても困ることはありません。

ベーシック認証は、あくまでも簡易的な認証方式となるため、機密情報を取り扱うことには向きません。会員向けのお知らせや公開前の動作確認ページに使うようにしましょう。