【Apache】Basic認証によるログイン画面の表示方法
はい、hebiです。
WebサーバーをApacheで構築している場合、Basic認証を設定することで簡単にログイン画面を表示させることができます。
お客様がアクセスしても良いページのみ許可して、その他管理画面などのアクセスを抑止したい場合にとても便利です。
ログイン画面の実装が不要でパッと認証機能を追加することができますのでぜひこの記事を参考にしてみてください!
前提
以下の記事で構築したApacheとPHP環境で解説していきます。
Basic認証について
先にBasic認証について説明します。
ApacheのBasic認証は、Apache HTTP Serverで使用されるセキュリティ機能の一つです。
これは、Webサーバーへのアクセスを制限するための一般的な方法の一つで、ユーザーが特定のURLにアクセスした際に、ユーザー名とパスワード認証を行うポップアップを表示させて抑止することができます。
Basic認証設定
Basic認証の設定を行っていきましょう。
ユーザーとパスワードの設定
以下のコマンドを実行し、ユーザーを追加します。
sudo htpasswd -c /etc/httpd/.htpasswd hebi
「hebi」部分がユーザー名です。
上記を追加すると、パスワードを求められるので入力します。
New password
入力してEnterすると、パスワードの再入力が求められるので入力します。
Re-type new password:
「Adding password for user hebi」と表示されたら成功です。
.htpasswsを開くと、パスワードは暗号化されているので、忘れずにどこかに控えておきましょう。
Apache設定ファイルを変更
以下のコマンドを実行しApacheの設定ファイルを開きます。
sudo nano /etc/httpd/conf/httpd.conf
以下の設定があるので
<Directory /var/www/html/my_codeigniter_project>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
以下のように変更しましょう。
<Directory /var/www/html/my_codeigniter_project/>
Options Indexes FollowSymLinks
AllowOverride All
# 許可するURL
SetEnvIf Request_URI "/home" valid-url
<RequireAny>
# URLを許可するためにはこれは必要
Require env valid-url
# IP接続許可設定
Require ip 192.168.1.1
Require ip 192.168.1.2
Require ip 192.168.1.3
# ベーシック認証
AuthType Basic
AuthName "Basic Authentication"
AuthUserFile /etc/httpd/.htpasswd
require valid-user
</RequireAny>
</Directory>
- 「SetEnvIf Request_URI “xxxx” valid-url」部分が接続を許可したいURLを指定します。今回は/homeの接続を許可してます。
※「Require env valid-url」を指定しないと許可されないので注意ください。 - 「Require ip 192.168.1.1」部分は設定したIPを許可します。
例えば、他システムからデータを受け取りたい場合は他システムのIPを登録することで他システム側は認証処理なくデータを渡すことができます。 - 「#ベーシック認証」部分は必須項目ですので入力してください。
Apacheの再起動
設定を適用するためにApacheを再起動します。
sudo systemctl restart httpd
以上で、Basic認証の設定完了です。
Basic認証動作確認
では、Basic認証が動作するか確認してみましょう。
まずは、/homeは接続許可したのでそのまま表示できるはずです。
home画面は表示できましたね!
では、test画面を表示してみましょう。
ログインのポップアップが表示されました。
誤ったユーザー名、パスワードを入力すると何度もポップアップが表示されます。
キャンセルすると以下のように認証エラーになります。
正しいユーザー名、パスワードを入力してログインするとtest画面にログインすることができました!
最後に
簡単に認証機能を追加することができました!
ログイン画面の実装が不要であれば、Basic認証もありだと思います。
例えばログイン画面は実装するけど、実装は終盤に行うので、Basic認証をかけておく。というのでも使えると思います!
ぜひ利用してみてください。
最後までお読みいただきありがとうございました(^^♪