開発環境構築

【Apache】Basic認証によるログイン画面の表示方法

hebishima.shogo

はい、hebiです。

WebサーバーをApacheで構築している場合、Basic認証を設定することで簡単にログイン画面を表示させることができます。

お客様がアクセスしても良いページのみ許可して、その他管理画面などのアクセスを抑止したい場合にとても便利です。

ログイン画面の実装が不要でパッと認証機能を追加することができますのでぜひこの記事を参考にしてみてください!

スポンサーリンク

前提

以下の記事で構築したApacheとPHP環境で解説していきます。

あわせて読みたい
Amazon LinuxにPHPとApacheをインストールする方法
Amazon LinuxにPHPとApacheをインストールする方法
あわせて読みたい
【PHP】CodeIgniter4のインストール方法
【PHP】CodeIgniter4のインストール方法

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を開くと、パスワードは暗号化されているので、忘れずにどこかに控えておきましょう。

ここで設定したユーザー名とパスワードが「Basic認証について」の項目で貼り付けたキャプチャの「ユーザー名」と「パスワード」にあたります。

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認証をかけておく。というのでも使えると思います!

ぜひ利用してみてください。

最後までお読みいただきありがとうございました(^^♪

スポンサーリンク
ABOUT ME
hebi
hebi
エンジニア
フルスタックエンジニアとして活躍中。
HTML5プロフェッショナル認定Level1、Level2所持者です。

未経験の方でも簡単にプログラミングを学べるようにと情報を発信しております。
記事URLをコピーしました