ベーシック認証 導入 + タイムアウト設定

広告




ベーシック認証の導入めも。

導入


.htpasswd
.htaccess
の2ファイルを作成して、該当ディレクトリに設置します。

.htpasswdの設置


ユーザ + パスワード定義ファイルです。

フォーマットは以下になります。
ユーザー名 :エンコードされたパスワード

htpasswdのフォーマットを作成してくれるサイトを利用します。
今回はココらへんのサイトを利用させて頂きました。
上記サイトに設定するユーザ名、パスワードを入力してアウトプットしたものをコピペして.htpasswdを作成します。
# vi /var/www/.htpasswd
userName:tesGeyALKYm3A
URLアクセスできない箇所に配置しましょう。
今回は以下に設置しました。
/var/www/.htpasswd

.htaccessの設置


アクセス制御したいディレクトリのルートに.htaccessを置きます。

例) test以下のディレクトリに制限をかけたい => testディレクトリに.htaccessを置く。
/var/www/html/test/.../.../...

# vi /var/www/html/test/.htaccess

# .htpasswdを置いた場所
AuthUserFile /var/www/.htpasswd
AuthGroupFile /dev/null
AuthName "Secret Area"
AuthType basic
require valid-user


確認


URLアクセスして認証が出れば成功!
更にhtpasswdで設定したユーザ + パスワードでログインできるかチェック(; ・`д・´)



タイムアウト設定


htaccess等を使用したベーシック認証では、クライアント側で一度認証に成功したパスワードをブラウザで保持している。
高いセキュリティが求められるWebサイトでは ユーザが一定時間操作を行わなかった場合に、強制的にログアウトされるような仕組みが求められる。

強制的にログアウトさせる仕組みづくりはApacheのモジュール「mod_auth_timeout」や、.htaccessの記述で実現できるとのこと。
今回は.htaccessの記述でやってみました。

.htaccessを編集


以下のように.htaccessを変更しましょう。

# vi /var/www/html/test/.htaccess

RewriteEngine On
RewriteCond %{HTTP_COOKIE} !LOGIN=([^;]+) [NC]
RewriteRule ^.*$ - [E=FORCELOGIN:1]
# ドメインと設定したい有効時間(分)を入れる ※以下は10分無操作で再入力を催促させる
RewriteRule ^.*$ - [CO=LOGIN:1:tamomoru.com:10:/]

<If "%{ENV:FORCELOGIN} = 1">
AuthUserFile /dev/null
</If>
<Else>
# .htpasswdを置いた場所
AuthUserFile /var/www/.htpasswd
</Else>
AuthGroupFile /dev/null
AuthName "Secret Area"
AuthType basic
require valid-user


以上!

参考


導入
http://www.luft.co.jp/cgi/htpasswd.php
タイムアウト
https://blog.aleajactaest.org/article_e6097802-e479-44b2-be6f-65929ba174ab.html
トラブルシューティング
https://kantaro-cgi.com/blog/web-server/cant_htpasswd.html

広告

Profile