ApacheでBasic認証かDigest認証のどちらの認証方法かわからなくなった場合

Apacheで作成したページ内で「.htaccess」でユーザー名とパスワードでアクセス制限をかけているコンテンツがあります。
久しぶりにユーザーを追加する必要があるので、ユーザーを追加しようと思いましたが、作成したパスワードファイルが、「htpasswd」か「htdigest」のどちらのコマンドで作ったメモなどのメモがありません。どちらのコマンドで作成したかを確認する方法を紹介します

認証のタイプの「AuthType」で確認する

Basic認証かDigest認証 は、「.htaccess」 や 「httpd.conf」 ファイル内の 認証方式を設定している箇所でAuthType ディレクティブを確認すると、どちらの認証方式を使用するように設定されているかがわかります。
AuthType ディレクティブでは、その認証方式に対応するパスワードファイル形式とコマンドが通常決まります。

Basic認証は、「AuthType Basic」で、Digest認証は、「AuthType Digest」となります

# Basic認証の場合
<Directory "/var/www/html/data">
    AuthType Basic
    AuthName "Basic Auth"
    AuthUserFile /etc/httpd/conf/.htpasswd
    Require valid-user
</Directory>

# Digest認証の場合
<Directory "/var/www/html/data">
    AuthType Digest
    AuthName "Digest Auth"
    AuthUserFile /etc/httpd/conf/.htdigest
    Require valid-user
</Directory>

パスワードファイルの内容で確認する

パスワードファイルは、「htpasswd」コマンドの場合は、ユーザー名:ハッシュ化されたパスワード となります。
「htdigest」コマンドは、 ユーザー名:レルム名:ハッシュ化されたパスワードとなり、コロンで区切られた3つのフィールドが必要となります。

AuthType の箇所で確認するのがいいですが、パスワードファイルのコロンの数でも判別は可能となります

# htpasswd で発行した場合は、「:」が1個
$ cat .htpass
test2:$apr1$RddPMFIN$F1oxVIa56O9M1dKT068qB1

# htdigest で発行した場合は、「:」が2個
$ cat .htdigest_pass
test1:Digest Auth:3b4569edd4d3a23d89e985a447eb9dfa
054429a743
test12::d2f8d7a2f25291decfae35b29ebee83b

 

スポンサーリンク

0
0