ApacheでのBasic認証設定を下記サイトを参考にやったのでメモ。
- 基本認証でアクセス制限をかける方法(https://allabout.co.jp/gm/gc/23780/)
- いまさらながら、Basic認証のつけかた(http://qiita.com/yuwaita/items/e406c645ae8d0cc3c3fa)
1.基本認証でアクセス制限をかける方法
.htaccessファイルを作る
.htaccessファイルとは
Webサーバの設定ファイル。
.htaccessファイルの書き方と設置方法
下記の4行を記載する。
- AuthType Basic
- AuthName 【認証領域名称】
- AuthUserFile 【ID・PASSWORD格納ファイルのパス】
- require valid-user
↑
1行目…認証方法としてBasic認証を指定
2行目…認証に使う領域名の指定
3行目…パスワードファイルの所在
4行目…認証されたユーザにアクセスを許可する
ファイルの保存先
アクセス制限を施したいディレクトリにアップロードする
.htpasswdファイルを作る
.htpasswdファイルとは
基本認証で使用する「IDとPASSWORDを格納した」ファイル。
htpasswdファイルの構成
ID名:暗号化されたパスワード
例:)
suzuki:XkB8Ou3kAcODe
yamada:5dHw0u9s4TltI
inoue:A0e7PvhEdWyvE
ここでいうID名は素で入力するが暗号化されたパスワードは作成する必要がある。
※ID名は大文字小文字の区別がある。
暗号化リンク
http://www.nishishi.com/scripts/htpasswd/
http://www.luft.co.jp/cgi/htpasswd.php
http://orange-factory.com/tool/crypt.cgi
などなど。
ファイルの保存先
.htaccessに記載した.htpasswdの保存先を指定。
2.いまさらながら、Basic認証のつけかた
手順(ざっと)
.htaccessについて
記述例
AuthUserfile /フルパス/.htpasswd
AuthGroupfile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user
詳細
-
AuthUserfile /フルパス/.htpasswd
サーバーのルートディレクトリからの.htpasswdへのパスを指定する。/usr/local/...とか/home/pass/...とかそういうの。 -
AuthGroupfile /dev/null
グループごとにアクセスを許可する、という指定。「/dev/null」とは、そのようなファイルは存在しないという意味。つまりグループごとでのアクセス制限はしないという意味。 -
AuthName "Please enter your ID and password"
ダイアログに表示される文章を指定。日本語だと文字化けするようだ。 -
AuthType Basic
AuthTypeを指定。「Basic(ベーシック認証)」と「Digest(ダイジェスト認証)」の2種類があって、Digestのほうが安全らしい。 -
require valid-user
ユーザーが誰であろうと、入力したIDとパスワードが合っていればアクセスできるという意味。特定ユーザーだけにアクセスさせたい場合は「require user xxx」とかする。 -
その他
ファイルの最後では改行したほうがいいかもしらんね。
悩み諸々
-
パーミッション
パーミッションは604!これでだめなら644? -
アップする場所
.htpasswdのファイルは、DocumentRootより上に設置すること。無理な場合は「AddHandler cgi-script htpasswd」を追記。
もしくは.htaccessファイルに.htaccessと.htpasswdにアクセスできなくさせる下記のようなコードを書く。
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>
-
500 Internal Server Error
.htaccessファイルに誤りがある場合。サーバの設定によって.htaccessファイルの設定が無効な場合。設置場所やディレクトリの限定的な使用によっては発生する。 -
401 Authorization Required
記号は使えません。英数字で。 -
特定のIPからのみアクセスできるようにするには
下記を.htaccessに追加する。
Satisfy any
order deny,allow
allow from xx.xx.xx.xxx/xx.xx.xxx.xxx
deny from all
参考
- ミケネコのhtaccessリファレンス(http://mikeneko.creator.club.ne.jp/~lab/web/htaccess/)