Basic認証の作成方法を覚えてテストサイトにアクセス制限をする

Basic認証の作成方法を覚えてテストサイトにアクセス制限をする

Basic認証でテストサイトにアクセス制限をするときのことです。

使用してるレンタルサーバーの設定でBasic認証をかけてしまえば簡単なのですが、自分でBasic認証の作成方法を覚えて実装をしたことがなかったので勉強がてらBasic認証の作成方法をまとめました。

Basic認証の作成方法は大きく分けて3ステップの作成方法です。

 

  1. Basic認証に必要なファイル「.htaccess」と「.htpasswd」を作成
  2. 「.htaccess」と「.htpasswd」にアクセス制限する記述をする
  3. Basic認証でアクセス制限をするWebサイトのディレクトリに2つのファイルを設置

 

Basic認証の.htaccessを作成

 

はじめにBasic認証に使用する.htaccessファイルを作成します。

vscodeなどのテキストエディタでファイル名を「htaccess.txt」で作成します。

.htaccessをhtaccess.txtでファイル作成するのは、ファイル名の頭にドットが付くことによって隠しファイルになってしまうためで、ドットなしのhtaccessファイル名にすることで作成したファイルがどこにいってしまったか迷わないようにするためです。

.htaccessにファイル名を変更するのはWebサーバーにアップロードしてから行います。

 

次にhtaccess.txtのファイル内にbasic認証を使用できるようにするたの以下の記述をします。

 

AuthType Basic
AuthName "Please enter your ID and password"
AuthUserFile /home/ドメイン名/フォルダ名/.htpasswd
require valid-user

 

書き方は簡単で「AuthType」「AuthName」「AuthUserFile」「require」の記述それぞれの右側に半角スペースを空けてBasic認証に必要な記述をします。

 

「AuthType」

AuthTypeをBasicで指定します。Basic認証を使用するからですね。「アクセス制限の認証タイプはBasic認証を使いますよ宣言」みたいな覚え方でもいいかと思っています。

 

「AuthName」

認証画面に表示される文章を書きます。日本語で書いてしまうと文字化けするようですが、そもそもChromeとSafariあたりはダイアログに表示されることはありませんでした。

 

「require」

valid-userを指定します。valid-userはBasic認証で入力したIDとパスワードが合っていれば誰でもアクセスが可能になる指定です。

 

「AuthUserFile」

AuthUserFileにはサーバーのルートディレクトリから.htpasswdまでのフルパスを指定します。

 

AuthUserFile /home/ドメイン名/フォルダ名/.htpasswd

 

指定することによって.htaccessがAuthUserFileのフルパスで.htpasswdファイルでのユーザーIDとパスワードを参照します。

 

Advertisement

 

フルパスの取得は、smple.phpのようにファイルを作成した中に<?php echo __FILE__; ?>を記述後、作成したsmple.phpのページを.htpasswdと同じ階層にアップしてブラウザでページにアクセスするとフルパスが表示されて取得できます。

フルパスの最後がsmple.phpになるので.htpasswdに置き換え忘れのないようにします。

 

Basic認証のユーザー名とパスワードを作成

 

Basic認証でアクセス制限をするテストサイトを表示するときにはユーザー名とパスワードを入力して表示することになります。このときに入力するBasic認証のユーザー名とパスワードは「.htpasswd」ファイルに記述して作成します。

まずは.htpasswdファイルの作成からです。.htaccessの作成のときと同じくvscodeなどのテキストエディタでファイル名を「htpasswd.txt」で作成します。

次に作成したhtpasswd.txtへの記述です。

.htpasswd.txtファイル内には以下の書式でBasic認証に使用するユーザー名とパスワードを記述します。

 

ユーザー名:パスワード

 

記号のコロンから左辺にユーザー名を、右辺にパスワードの書式で記述します。

例えばBasic認証のユーザー名を「testuser」にして、パスワードは「passminaide」で作成する場合を例にしたのが次の記述です。

 

testuser:bU519JYmuyXxo

 

ユーザー名は「testuser」でそのまま記述。

 

Basic認証のパスワードは英数字の組み合わせで暗号化したものを作成して使用します。パスワードを暗号化する作成方法は次のパスワード生成ツールを使用すると書式の通り生成してくれるのでコピペで済みます。

 

 

.htaccessによる認証用:パスワード暗号化ツール

 

パスワード暗号化ツールの使い方は簡単で、IDの入力ボックスにユーザー名を入力、Passwordの入力ボックスにはパスワードを入力します。

入力後は「生成」ボタンをクリックすることでhtpasswdに記述するユーザー名とパスワードが書式になって生成されますので、そのまま.htpasswdファイルにコピペで貼り付けます。

 

testuser:bU519JYmuyXxo
smpleuser:pBWgMSoFPSs.w
nazonouser:WSGdzrqJo0ZgQ

 

複数のユーザー名とパスワードをBasic認証で使いたい場合は改行して下にどんどん追加していくだけです。

ここまででBasic認証に必要な2つのファイル「.htaccess」と「.htpasswd」の作成が完了です。

 

htaccessとhtpasswdをディレクトリにアップロード

 

Basic認証に使用するhtaccess.txtとhtpasswd.txtの2つのファイルはFTPソフトを使ってBasic認証でアクセス制限をかけたいテストサイトのディレクトリにアップロードします。

アップロード後は必ずhtaccess.txtを.htaccessに、htpasswd.txtも.htpasswdにファイル名を変更します。

パーミッションは.htaccessと.htpasswdどちらも604です。

 

Advertisement

 

アップロードするディレクトリの場所は、htaccessをBasic認証でアクセス制限をかけたいテストサイトのディレクトリにアップロードして、htpasswdはドキュメントルートよりも上にアップロードするのでも良いみたいなのですね。

使用しているエックスサーバーがドキュメントルートよりも上になっていました。

私としては、使用レンタルサーバー既存のファイルはいじらずに、Basic認証が不要になったとき自分で作成したファイルだけを削除するほうが気が楽だと考えました。

なので.htaccessと.htpasswdはBasic認証でアクセス制限をかけたいディレクトリにまとめてアップロードする方法にしています。

 

テストサイトでBasic認証のアクセス制限を確認

 

最後はテストサイトでBasic認証のアクセス制限を確認です。

 

 

.htaccessをアップロードしたディレクトリにブラウザでアクセスすると、Basic認証のウインドウが開き、.htpasswdに設定したユーザーIDとパスワードの入力でアクセス制限したページにログインできるのが確認できればBasic認証の作成方法は成功です。

Basic認証の作成方法を覚えてテストサイトにアクセス制限をすることができたら、.htaccessの設置場所を変えて、テストサイトのいろいろなディレクトリでBasic認証のアクセス制限確認をしてみるのも覚えるためには良いかと思います。

 

わたしは丸一日アクセス制限の確認がてらBasic認証を作成して遊んでしまっていましたが、根本的に覚えておきたいことはアクセス制限をするために使用した.htaccessの有効範囲だと思いました。

.htaccessは特定のディレクトリに設置することで.htaccess 内に記述したBasic認証に使用する記述内容が、設置されたディレクトリ内とその下層のディレクトリ範囲内に対して適用される仕組みです。

HTMLカテゴリの最新記事