Basic認証
- Webサイトの閲覧に使うプロトコル「HTTP」が備える、簡易的なユーザ認証方式。
- アクセスの制限されたWebページにアクセスしようとすると、Webブラウザでユーザ名とパスワードの入力を求める。
- Basic認証はファイルやディレクトリ単位でしか制御できない。
- Base64でエンコードして送信する。
- 平文でのやり取りなのでセキュアでない。SSLにすれば別。内部システムの認証によく使われる。
HTTP/1.0", includes the specification for a Basic Access
Authentication scheme. This scheme is not considered to be a secure
method of user authentication (unless used in conjunction with some
external secure system such as SSL [5]), as the user name and
password are passed over the network as cleartext.
実装方法
###.htaccessを作成
AuthUserFile /app/.htpasswd
AuthType Basic
AuthName "Restricted Access"
Require valid-user
//IPアドレスによる制限もかける場合は以下を記載
Satisfy Any
Order Allow,Deny
Allow from 192.168.36.0/24
- AuthType : ユーザー認証の方法を指定します。
- AuthName : ダイアログに表示される文字列を指定します。
- Require valid-user : 入力したIDとパスワードが合っていれば誰でもアクセスできるという意味。
- Satisfy Any:IPアドレス制限とBASIC認証のどちらか一方を満たせばアクセスが許可される。
- Satisfy All:IPアドレス制限とBASIC認証の両方を満たす場合にアクセスが許可される。
###.htpasswdを作成
- ID:username,PASS:hogeとしたいとすると、username:Mtyb8PH67BU9Yというコードを書く。
- パスワードは以下サイト等を使って作成する。
- https://www.luft.co.jp/cgi/htpasswd.php
###サーバー再起動
sudo service httpd restart
Digest認証
- クライアントでユーザー名, パスワード, ランダムな文字列をMD5でハッシュ化し, サーバーに送信する. サーバー側でもハッシュ値を計算し, クライアントから送信されたハッシュ値と合致するかを検証する。
- ハッシュ値を送信するため, パスワードを平文で送らないという点でBasic認証に比べて盗聴に耐性がある。
- MD5なので強度はそこまで強くない。
実装方法
パスワードファイルの作成
htdigest -c passwdfile realm username
-
-c : パスワードファイルを作成する。
-
passwordfile : 任意のパスワードファイル名
-
realm : httpd.conf内の「Auth Name」と同様のものを指定する。
-
username : ユーザー名
パスワードの設定
Adding password for user in realm Digest Auth.
New password:
httpd.confに追記
<Directory "/var/www/html/">
AuthType Digest
AuthName "XXX Zone"
AuthUserFile "/path/to/documentroot/.htdigest"
Require valid-user
</Directory>
- AuthName: 領域名を定義する。領域名が同じならば、画面が変わっても認証されたことになり認証画面は表示されない。
- AuthName : httpd.conf内の「Auth Name」と同様のものを指定する。
- AuthUserFile: パスワードファイルの場所をフルパスで指定する。
- Require valid-user: 入力したIDとパスワードが合っていれば誰でもアクセスできるという意味。
###サーバー再起動
sudo service httpd restart