【WEB】Basic認証(ベーシック認証)

もくじ

Basic認証とは

Basic認証とは、ウェブサイトの特定の領域にアクセス制限を設けることができる認証方法の一つです。

Basic認証はWebサーバの基本的な機能としてほとんどのWebサーバで設定することができます。

知っておくこと

脆弱性

Basic認証はセキュアな認証とは言い切れない認証です。

その脆弱性の詳細については他のサイト様に委ねます。。

ディレクトリ単位でのアクセス制限

.htaccessファイルのあるディレクトリ全体がBasic認証の対象になります。rootディレクトリに.htaccessファイルを置けばサイト全体をBasic認証にかけられます。

.htaccessファイルの中で細かく設定すれば、特定のページだけにBasic認証をかけることも可能です。

ブラウザを閉じるまで認証は有効

Basic認証に成功すると、ユーザがブラウザを閉じるまで有効で何度でもアクセスできます。

ブラウザさえ閉じていなければ、仮に、違うWebサイトを閲覧した後でも認証なしで再びアクセスすることが可能です。

注意点

Basic認証を設定していると、そのサイトにはクローラーもアクセスできません。

クローラとは↓。

bonoponz.hatenablog.com

そのため、GoogleYahoo!などで検索しても検索結果に表示されなくなります。多くの目に触れてほしいサイトには不向きということですね。

設定

.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認証のパスワードを生成(暗号化)するツールなどがあるので、それを利用しましょう。

個人的に以下のサイトがわかりやすいです。

www.luft.co.jp

f:id:bonoponz:20210128175845p:plain

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認証はあくまで簡易的な認証ということを覚えておきましょう〜。

参考URL

ベーシック認証(Basic認証)とは?設定方法と注意点・エラーになる原因を解説 | Webmedia

htpasswdコマンドの使い方 - Qiita