Apacheの認証
Apacheでの認証
basic認証
基本は、.htaccessファイルを作成し、アクセス制限をかけたいディレクトリにおくのと、.htpasswordファイルを作成するだけ。
digest認証をやる
何点か考慮しないと、結構ハマるかも・・・
- digest認証でID/PWD認証が成功すると、ブラウザを閉じるまで有効になる。なので、Apacheの設定を変更しサービス再起動してアクセスしても、以前の認証が有効になっているため期待する動作にならない可能性がある。
そのときは、おとなしくブラウザの再起動をする。
- ブラウザの再起動をしないでキャッシュクリアをしても、digest認証は有効なままなので期待する動作にならない可能性がある。
- 設定変更する度にブラウザを再起動するのは手間なので、curlコマンドで確認したほうが手っ取り早い。
digest認証の設定
- ID/PWDファイルはすでに作成済みの前提
[root@web01 conf.d]# cat /etc/httpd/conf.d/digest.conf <Directory "/var/www/html/api"> # /apiへのアクセスはdigest認証が必要 # digest auth AuthType Digest AuthName "Digest Auth" AuthUserFile /etc/httpd/conf/htdigest Require valid-user </Directory>
特定のIPからのアクセスは認証なしで通す場合
RequireAnyディレクティブを設定すると、Requireでどれかにマッチした場合にOKとなるので、この場合、IPアドレスが10.10.10.XのIPからのアクセスはパスワードなしでアクセスが許容される。
cat /etc/httpd/conf.d/digest.conf <Directory "/var/www/html/api"> # 特定のIPのみ認証なしでのapiアクセスを許容する # digest auth <RequireAny> AuthType Digest AuthName "Digest Auth" AuthUserFile /etc/httpd/conf/htdigest Require valid-user Require ip 10.10.10. </RequireAny> </Directory>
特定のIPからのアクセスはdigest認証で許可し、それ以外のIPからのアクセスは禁止する場合
cat /etc/httpd/conf.d/digest.conf <Directory "/var/www/html/api"> # /特定のIPはDigest認証で許可、それ以外のIPはアクセス拒否 # digest auth <RequireAll> AuthType Digest AuthName "Digest Auth" AuthUserFile /etc/httpd/conf/htdigest Require valid-user Require ip 10.10.10.0 </RequireAll> </Directory>
認証なしでIP制限
digest認証が不要で、特定のIPからのアクセスのみを許可したい場合はこれでいい。
[root@web01 conf.d]# cat allow.conf <Directory "/var/www/html/api"> # IP10.10.10.xからのアクセスのみ許可 # RequireAnyがデフォルトなので、これはなくてもいい <RequireAny> Require all denied Require ip 10.10.10. </RequireAny> </Directory>