もくじ
Basic認証とは
Basic認証とは、ウェブサイトの特定の領域にアクセス制限を設けることができる認証方法の一つです。
Basic認証はWebサーバの基本的な機能としてほとんどのWebサーバで設定することができます。
知っておくこと
脆弱性
Basic認証はセキュアな認証とは言い切れない認証です。
その脆弱性の詳細については他のサイト様に委ねます。。
ディレクトリ単位でのアクセス制限
.htaccess
ファイルのあるディレクトリ全体がBasic認証の対象になります。rootディレクトリに.htaccess
ファイルを置けばサイト全体をBasic認証にかけられます。
.htaccess
ファイルの中で細かく設定すれば、特定のページだけにBasic認証をかけることも可能です。
ブラウザを閉じるまで認証は有効
Basic認証に成功すると、ユーザがブラウザを閉じるまで有効で何度でもアクセスできます。
ブラウザさえ閉じていなければ、仮に、違うWebサイトを閲覧した後でも認証なしで再びアクセスすることが可能です。
注意点
Basic認証を設定していると、そのサイトにはクローラーもアクセスできません。
クローラとは↓。
そのため、GoogleやYahoo!などで検索しても検索結果に表示されなくなります。多くの目に触れてほしいサイトには不向きということですね。
設定
.htaccess
ファイル作成
Basic認証をかけたいディレクトリに.htaccess
ファイルを作成します。もともとある場合は作成する必要はありません。
「ドット エイチティー アクセス」と読むみたいですね。
.htaccess
ファイルを編集
.htaccess
ファイルに以下の4行を追記するだけです。
AuthType Basic AuthName "[認証名]" AuthUserFile ".htpasswdファイルの場所" require valid-user
AuthType Basic
認証方式を設定します。
AuthName
この認証の名前を任意で設定します。日本語だと文字化けの可能性があるので、半角英数字で設定しましょう。ダブルクオテーションマーク(" ")で囲む必要があるので注意しましょう。
AuthUserFile
ユーザー名とパスワードを記したファイル「.htpasswd」ファイルを設置する場所を記述します。
AuthName
同様にダブルクオテーションマーク(" ")で囲む必要があるので注意しましょう。
require valid-user
全ユーザーに認証を求めるようにするという意味です。この通りに記述します。
.htpasswd
ファイル作成
.htpasswd
ファイルはBasic認証のログイン情報(IDとパスワード)を格納するファイルです。
.htaccess
ファイル内で指定した場所に保存しましょう。
.htaccess
ファイルを編集
[ユーザー名1]: [暗号化されたパスワード1] [ユーザー名2]: [暗号化されたパスワード2]
ユーザー名と暗号化されたパスワードを、半角コロン(:
)で区切って記述します。
ログインアカウントの数だけ、1行ずつ記述します。1つでよければ1行で十分です。
パスワードは暗号化したものを設定します。
パスワードを暗号化
Basic認証のパスワードを生成(暗号化)するツールなどがあるので、それを利用しましょう。
個人的に以下のサイトがわかりやすいです。
IDをパスワードを入力して生成ボタンを押すと簡単に暗号化してくれます。
暗号化したパスワードを.htaccess
ファイルにコピペして保存します。
コマンドで.htaccess
ファイルを作成/編集
新規でユーザ/パスワードを作成する
[root@server ~]# htpasswd -c /var/www/passwd/.htpasswd user1 New password: Re-type new password: Adding password for user user1 [root@server ~]# cat /var/www/passwd/.htpasswd user1: [暗号化されたパスワード]
-c
オプションで、ユーザ名とパスワードを指定して新規で.htpasswd
ファイルを作成できます。
このコマンドで作成すると作成するタイミングで自動的にパスワードが暗号化されます。
ユーザを追加する
[root@server ~]# htpasswd /var/www/passwd/.htpasswd user2 New password: Re-type new password: Adding password for user user2
さきほどのファイルに追加した場合、このようになります。
[root@server ~]# cat /var/www/passwd/.htpasswd user1:[暗号化されたパスワード1] user2:[暗号化されたパスワード2]
ユーザを削除する
[root@server ~]# htpasswd -D /var/www/passwd/.htpasswd user2 Deleting password for user user2 [root@server ~]# cat /var/www/passwd/.htpasswd user1:[暗号化されたパスワード1]
-D
オプションで削除ができました。
パスワードを変更
[root@server ~]# htpasswd /var/www/passwd/.htpasswd user1 New password: Re-type new password: Updating password for user user1
オプションなしで同じユーザ名にすることで上書きされます。
完成
.htaccess
ファイルと.htpasswd
ファイルで完成です。
しかし、Basic認証はあくまで簡易的な認証ということを覚えておきましょう〜。