Apache
Basic認証

ApacheでBasic認証設定

More than 1 year has passed since last update.

ApacheでのBasic認証設定を下記サイトを参考にやったのでメモ。

  1. 基本認証でアクセス制限をかける方法(https://allabout.co.jp/gm/gc/23780/)
  2. いまさらながら、Basic認証のつけかた(http://qiita.com/yuwaita/items/e406c645ae8d0cc3c3fa)

1.基本認証でアクセス制限をかける方法

.htaccessファイルを作る

.htaccessファイルとは

Webサーバの設定ファイル。

.htaccessファイルの書き方と設置方法

https://allabout.co.jp/gm/gc/23962/

下記の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認証のつけかた

手順(ざっと)

  1. .htaccessファイルを作成する
  2. .htaccess用パスワード作成ツールここここで.htpasswdを作成する
  3. 1,2をサーバにアップする。パーミッションは604

.htaccessについて

記述例

.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にアクセスできなくさせる下記のようなコードを書く。

.htaccess
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</Files>
  • 500 Internal Server Error
    .htaccessファイルに誤りがある場合。サーバの設定によって.htaccessファイルの設定が無効な場合。設置場所やディレクトリの限定的な使用によっては発生する。

  • 401 Authorization Required
    記号は使えません。英数字で。

  • 特定のIPからのみアクセスできるようにするには
    下記を.htaccessに追加する。

.htaccess
Satisfy any

order deny,allow
allow from xx.xx.xx.xxx/xx.xx.xxx.xxx

deny from all

参考