#author("2019-11-06T18:09:19+09:00;2019-11-06T18:08:58+09:00","default:inoue.ko","inoue.ko")
*Basic認証
Basic Authentication
~
//&color(red){''注)'' 現在のWebサービスではForm認証を行うのが主流です。};> [[付記>#form]]
//~
Basic認証とはWebサイトへのアクセスに対して、
ユーザー名とパスワードの入力を求めるユーザー認証の方法です。
当該サイトのフォルダに、 ''.htaccess'' と ''.htpasswd'' という
2つのファイルを作って置くことで実現します。
-いずれもテキストファイルなので、[[テキストエディタ>TextEditor]]があれば作れます。
-尚、 .htaccess と .htpasswd のような [.]ではじまるファイルは、一般に''隠しファイル''として扱われます。「保存したら見えなくなった(隠れた)」という状態になりますので、PCのフォルダ表示設定で「隠しファイルを表示」の状態にして作業して下さい。
~
***CONTENTS
#contents2_1
~
**.htaccessファイルの作成
.htaccessファイルは、httpd.confで設定されているApache(httpサーバー)の各種設定を、ディレクトリごとに独自に変更するためのファイルです。
Apacheは、httpでアクセスされたフォルダに.htaccessというファイルがあると、それをまず読んで、IDとパスワードを要求します。
記述例
AuthType Basic
AuthName "Basic Authentication Sample"
AuthUserFile /home/sampleuser/public_html/test/.htpasswd
// AuthUserFile /user8/k00ad000/WWW-KSU/.htpasswd
Require user sampleuser
ただし、上の4行をそのままコピー&ペーストしても動きません。
各行には下記とおり、それぞれ意味があるので、''特に3、4行目''については、あなたの設定に''書き換える必要''があります。
-1行目:BASIC認証を要求することを宣言(例のままでOK)
-2行目:この認証の名前(例のままでもOKですが、複数の認証をあちこち設定する場合は、認証ごとに異なる文字列にする必要があります)
-3行目:''パスワードファイルの絶対パス''( 以下参照 )
-4行目:''ユーザ名''(任意ですが .htpasswd の記述と連動します)
~
***補足1:「絶対パス」の情報がない場合
パスワードファイルの絶対パスは、以下の手順で調べることができます。
-1) 以下のソース(たった一行ですが)を、テキストエディタで新規ファイルとして作成し、test.phpという名前で保存します。
<?php echo realpath(__FILE__); ?>
-2) FTPツールを用いて、あなたのサイトの当該ディレクトリ(保護したいディレクトリ)にアップします。
-3) ブラウザで、[あなたのサイトの当該ディレクトリ]/test.php にアクセスすると絶対パスの情報が得られます。以下のような感じで見えるはずです。
/userX/k00ad000/WWW-KSU/test.php
test.phpより左の部分が当該ディレクトリの絶対パスです。
で、最終的に .htaccess の AuthUserFile の部分(上記の例では3行目)には、以下のように記載すればOKです。
AuthUserFile /userX/k00ad000/WWW-KSU/.htpasswd
~
***補足2:エリア外からのアクセスを拒否する場合
例えばアクセス元を社内ネットワーク等に限定する場合は、IPアドレスによる制限が簡単です。以下のような3行を、.htaccessの中に記載します。
order deny,allow
deny from all
allow from 133.17.
一旦、全拒否と書いて、特定のアドレスのみ認める・・・という意味です。
この例は、133.17.*.* ネットワーク内からのアクセスであればパスします。
&small(本学で学内限定の場合、新規のテキストファイルに上記3行のみ書けばOKです。);
注)効果がない場合は、[[こちら>#directive]]をご確認ください。
~
~
**.htpasswdファイルの作成
次に、ユーザ名とパスワードを記述したファイルを作成します。
ユーザ名 : パスワード 例) sampleuser:6HaskEn4F
の形で記述して、これを(たった一行ですが)ファイルとして
.htpasswdという名前で保存します。
ただし、''パスワードを暗号化する必要がある''ので、一般には
以下のような .htpasswd作成支援ツールを用いて生成します。
IDとパスワードを入力して「生成」するとソースが表示されますので、それをコピー&ペーストして .htpasswdファイルとして保存すればOKです。
[[htpasswdファイル生成|lufttooles>http://www.luft.co.jp/cgi/htpasswd.php]]
''参考''
Linux環境の方は、htpasswdというコマンドで簡単にファイルができます。
1)端末を開いて当該ディレクトリに移動
2)以下を実行
$ htpasswd -c .htpasswd sampleuser
New password: (パスワードを入力;画面には表示されません)
Re-type new password: (パスワードをもう一度入力)
3) 以下のような .htpasswdファイルが自動生成されます。
sampleuser : 6Has・・・kEn4F
~
~
**動作確認
***当該ディレクトリにアップ
.htaccessと.htpasswdを、あなたのサイトの当該ディレクトリ(パスワード保護をかけたいディレクトリ)内にFTPでアップロードして下さい。
当該ディレクトリにアクセスすると、認証を求めるウインドウが表示されるはずです。ユーザ名とパスワード入力して、正常に動作するか確認して下さい。
&aname(directive);
~
***注)効果がない場合
.htaccessは、httpd.confにて利用可能な設定になっていないと使えません。
.htaccessの許可設定を変更するには、AllowOverride ディレクティブを使用します。httpd.conf 内に「AllowOverride None 」と記載があると無効です。
以下のように書き直す必要があります。
<Directory "/var/www/html">
:
AllowOverride All
:
</Directory>
ちなみに、CentOS の場合、httpd.conf は、以下の場所にあります。
/etc/httpd/conf/
~
~
&aname(form);
#hr
***付記:Form認証について
フォーム入力によるユーザID・パスワードの送信とクッキーを用いたセッション管理を用いたユーザ認証を ''Form認証'' といいます。
現在のWebサービスではフォームによるユーザ認証を行うのが主流です。
参考:Form認証の手順
-ユーザ登録ページでユーザが指定したキーとシークレットをサーバ側に登録。
-ユーザはログインページのフォームから、ID・パスワードを入力し送信。
-サーバ側でこれを検証し、ID・パスワードと一致すれば認証を確立。
-このとき、認証情報を保存する目的で、セッションIDを発行、
レスポンスクッキーにセッションIDを付与。
-サーバ側ではユーザのIDとセッションIDをひもづけして保管。
-次回リクエスト時には、ブラウザがクッキーをリクエストに付けて送信。
-サーバ側はリクエストクッキー内のセッションIDとサーバ側で記録したセッションIDとを比較検証して、ユーザのログイン状態を判定。
~
~
~
~