Apacheでベーシック認証かけてみよう

ちょっとしたファイルをウェブ上に置いておきたいときに、ベーシック認証は便利です。

またApacheの認証の基本になりますので、覚えておくと他の認証にも応用できます。

ベーシック認証とは?

ユーザー名とパスワードでログインができる、従来からある認証方式です。

一部の人だけに公開したい場合などは、すぐに設定できるため便利です。

ただし、通常だと平文でパスワードが送られるため、重要なファイルを置くのであればSSL通信が必須です。

パスワードファイルを作成する

それでは、ベーシック認証の設定を行っていきましょう。

次のコマンドは、/etc/apache2/passwd/passwordsにkanaというユーザーでパスワードファイルを作成しています。

htpasswd -c /etc/apache2/passwd/passwords kana

このようにパスワードの入力が求められます。

パスワードは何でも構いません。

New password:
Re-type new password:
Adding password for user kana

作成結果を見てみましょう。

cat /etc/apache2/passwd/passwords

パスワードは暗号化されているので、一見、入力したものとは違うように見えますが正しく作成されています。

kana:$apr1$sYxCBd89$9Qo/TjONQTfZyVFQSoq8y0

ベーシック認証の設定を行おう

認証の設定方法は2種類あります。

apach2.confなどに直接書く方法と、もう1つは.htaccessファイルを作成して、認証をかけたいディレクトリに保存する方法です。

今回はconfファイルに直接書く方法で進めていきます。

設定ファイルに直接書く

apache2.confファイルを開いて次のように編集します。

この例ではApacheのトップページに認証をかけています。

<Directory /var/www/>                                                                          
        Options Indexes FollowSymLinks
        AllowOverride None
        # Require all granted

        AuthType Basic
        AuthName "Basic Test"
        AuthBasicProvider file
        AuthUserFile /etc/apache2/passwd/passwords
        Require user kana
</Directory>

ファイルを保存をして再起動しましょう。

apachectl restart

ローカル環境で確認しているのであれば、ウェブブラウザのURLにlocalhostと入力することでアクセスできます。

localhost 

VPSなどを借りて検証している場合は、そのサーバーのグローバルIPアドレスを入力してみてください。

ユーザー名とパスワードを入力するウィンドウが表示されます。

先ほど設定したユーザー名とパスワードを入力するとトップページが表示されるはずです。

Chromeのシークレットモードが便利

ベーシック認証は一度認証に成功するとブラウザを閉じるまで認証が有効になります。

何度も検証する場合は、Chromeのシークレットモードが便利です。

Macであれば次のキーを同時に押すことでシークレットモードでブラウザを開くことができます。

Command + Shift + N 

ベーシック認証の項目について

雰囲気でわかるものもありますが、1つずつ見ていきたいと思います。

AuthTypeは認証の方式を指定します。

今回はベーシック認証のためBasicという値を設定します。

AuthType Basic

AuthNameはパスワードのウィンドウに表示される説明文だと考えて構いません。

ただし、ブラウザによっては表示されないこともあります。

AuthName "Basic Test"

AuthBasicProviderは認証に使用するデータのタイプを指定します。

先ほど作成したパスワードファイルを使用するためfileとします。

またデフォルトの設定でもfileが指定されるため、この項目自体を省略することもできます。

AuthBasicProvider file

AuthUserFileは指定したパスワードファイルで認証を行います。

AuthUserFile /etc/apache2/passwd/passwords

RequireUseruserの後ろに指定したユーザーのアクセスを許可します。

Require user kana

まとめ

ベーシック認証はApacheの基本的な設定ですが、LDAP認証などを絡めて複雑な条件を設定することもできます。

まずはApacheの設定の書き方に慣れてもらい、.htaccessを利用するなど、少しずつできることを増やしていきましょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です