こんにちは。
エンジニア歴1年ちょっとの新米バックエンドエンジニアです。
今回はbasic認証でちょっと躓いたのでその備忘録です。
basic認証のかけ方
.htaccessファイルの作成
まずは上記の2つのファイルを作成します。
.htaccessファイルに下記のコードを追記
AuthUserFile "/home/フルパス.htpasswd"
AuthName "Please enter your ID and Password."
AuthType Basic
require valid-user
AuthUserFile
認証に使用されるパスワードとユーザー名が書いてある.htpasswdファイルのフルパスを指定します。
(フルパスの調べ方は後述)
AuthName
ユーザーに表示されるメッセージを編集できます。
このままでも大丈夫です。
AuthType
使用する認証タイプの指定を行います。
大文字小文字を正確に区別する必要があるので注意して記述してください。
Require valid-user
.htpasswd ファイルに記載されているユーザーに対してアクセスを許可する設定です。
.htpasswd ファイルの作成
次に.htpasswd ファイルの作成を行います
username:password
.htpasswdファイルには認証で使うユーザー名とパスワードを記載します。
パスワードはパスワード暗号化ツール を使って暗号化しましょう。
フルパスの調べ方(PHP)
PHPを使ってフルパスを調べる方法を紹介します。
中々フルパスへの調べ方が分からなくて苦戦しました
まず、path.php(任意のファイル名)を作成し、以下のコードを記述
<?php
$htpasswdPath = __DIR__ . '/.htpasswd';
echo $htpasswdPath;
?>
path.phpをサーバーにアップロード後、path.phpにアクセスするとフルパスが出てくるのでそちらを全部コピーして .htaccessファイルに追記します。
サーバーにファイルをアップロード
.htpasswdをアップロードする際は必ず.htaccessで指定したディレクトリの直下に配置してください。
また、.htaccessファイルですが認証をかけたいディレクトリに配置してください。
例)管理者画面のみにbasic認証をかけたい場合
web
├ assets
│ ├ js
│ │ ├ main.js
│ │ └ vendor.js
│ └ css
│ └ style.css
//adminフォルダ直下に.htaccessを設置
├ admin
│ ├ .htaccess
│ └ info
│ ├ hoge.php
│ └ admin.php
└ index.html
adminフォルダ直下に.htaccessファイルを配置することで管理者画面にアクセスしたときのみにbasic認証がかかるようになりました。
まとめ
今回はbasic認証について簡単にですがまとめてみました。
かなり手こずりましたが、1人ですることができたので良かったです。
同じように苦戦している人の参考になれば幸いです。