apacheでBasic認証をLixnuxアカウントでおこなう

スポンサーリンク

Apache が動作している Linux のユーザアカウントで Basic認証する方法です。
なお、Digest認証には対応していません。
CentOS6/7,Ubuntu14.04の場合です。

CentOS6

まず、EPELリポジトリを使用できるようにします。
下記記事を参照してください。

CentOS6/7でEPELリポジトリを利用する設定 パソコン鳥のブログ

mod_authnz_external をインストールします。

yum --enablerepo=epel install mod_authnz_external

apache の設定ファイルに下記を追加します。
「識別名」の個所は何でもいいです。

LoadModule authnz_external_module modules/mod_authnz_external.so
DefineExternalAuth 識別名 pipe /usr/bin/pwauth

Basic認証の設定個所では、次を追加します。先に記述した「識別名」と同じものをここでも指定します。

AuthBasicProvider external
AuthExternal 識別名

ここでは、例として、/etc/httpd/conf.d/authnz_external.conf に設定します。

先頭にすでに
LoadModule authnz_external_module modules/mod_authnz_external.so
DefineExternalAuth pwauth pipe /usr/bin/pwauth
があるので、下記をファイルの末尾に追加します。

<Directory /var/www/html>
    AuthType Basic
    AuthName "Protected Area"
    AuthBasicProvider external
    AuthExternal pwauth
    require valid-user
</Directory>

設定後、apache を再起動します。

/etc/init.d/httpd reload

これで、ブラウザからアクセスした際に、認証が要求されます。
Linux上のユーザアカウント・パスワードで認証できます。

なお、アカウント・パスワードが合っているはずなのに認証が通らない場合は、SELinux が有効になっているかもしれません。
下記のように変更して再起動し、SELinux を無効にしてみて下さい。

/etc/sysconfig/selinux

SELINUX=disabled

CentOS7

まず、EPELリポジトリを使用できるようにします。
下記記事を参照してください。

CentOS6/7でEPELリポジトリを利用する設定 パソコン鳥のブログ

mod_authnz_external をインストールします。

yum --enablerepo=epel install mod_authnz_external

apache の設定ファイルに下記を追加します。
「識別名」の個所は何でもいいです。

LoadModule authnz_external_module modules/mod_authnz_external.so
DefineExternalAuth 識別名 pipe /usr/bin/pwauth

Basic認証の設定個所では、次を追加します。先に記述した「識別名」と同じものをここでも指定します。

AuthBasicProvider external
AuthExternal 識別名

ここでは、例として、/etc/httpd/conf.d/authnz_external.conf に設定します。

/authnz_external.conf の先頭にすでに
LoadModule authnz_external_module modules/mod_authnz_external.so
DefineExternalAuth pwauth pipe /usr/bin/pwauth
の記述があるので、下記をファイルの末尾に追加します。

<Directory /var/www/html>
    AuthType Basic
    AuthName "Protected Area"
    AuthBasicProvider external
    AuthExternal pwauth
    require valid-user
</Directory>

設定後、apache を再起動します。

systemctl restart httpd

これで、ブラウザからアクセスした際に、認証が要求されます。
Linux上のユーザアカウント・パスワードで認証できます。

Ubuntu14.04

ibapache2-mod-authnz-external をインストールします。

apt-get install libapache2-mod-authnz-external

モジュール authnz_external、auth_basic を有効にします。

a2enmod authnz_external
a2enmod auth_basic
service apache2 restart

apache の設定ファイルに下記を追加します。
「識別名」の個所は何でもいいです。

DefineExternalAuth 識別名 pipe /usr/sbin/pwauth

Basic認証の設定個所では、次を追加します。先に記述した「識別名」と同じものをここでも指定します。

AuthBasicProvider external
AuthExternal 識別名

ここでは、例として、/etc/apache2/sites-enabled/000-default.conf に設定します。

/etc/apache2/sites-enabled/000-default.conf の最後に下記を追加します。

DefineExternalAuth pwauth pipe /usr/sbin/pwauth
<Directory /var/www/html>
    AuthType Basic
    AuthName "Protected Area"
    AuthBasicProvider external
    AuthExternal pwauth
    require valid-user
</Directory>

設定後、apache を再起動します。

service apache2 reload

これで、ブラウザからアクセスした際に、認証が要求されます。
Linux上のユーザアカウント・パスワードで認証できます。

以上、Apache が動作している Linux のユーザアカウントで Basic認証する方法でした。

参考

Apacheのbasic認証とdigest認証 パソコン鳥のブログ
Ubuntu 14.04 LTS : WEBサーバー : Basic認証 + PAM : Server World
Sambaのパスワードデータベースを利用してApacheのBASIC認証を行う – ブログ – ワルブリックス株式会社
ConfigApache24 · haegar/mod-auth-external Wiki · GitHub
CentOS 7 : Apache httpd : Basic 認証 + PAM : Server World

コメント

タイトルとURLをコピーしました