こんにちはreiyaです.
Digest認証の実装時に詰まったので,その時の解決方法を共有します.
解決前のコード
『.htaccess』ファイル内
AuthType Digest
AuthName "restricted area"
AuthDigestDomain ./
AuthDigestProvider file
AuthUserFile /Applications/MAMP/htdocs/digest-auth/.htpasswd
Require valid-user
『.htpasswd』ファイル内
test:digest-auth:3f0b2bb7ec067109636d17b1c60e0ef2
でした.
解決策
ChatGPTに聞いても指摘されなかったので,気にしていませでしたが,『.htaccess』ファイルのAuthNameと『.htpasswd』ファイルの認証名(自分の場合digest-auth)を揃えないといけなかったみたいです.
修正後
AuthType Digest
AuthName "digest-auth"
AuthDigestDomain ./
AuthDigestProvider file
AuthUserFile /Applications/MAMP/htdocs/digest-auth/.htpasswd
Require valid-user
自分の場合はこれで動きました.
他に考えられる原因
以下は解決までに試したことです.
他に考えられる原因として以下のような部分に問題があるかもしれません.
パスの見直し
『.htaccess』ファイル内のAuthDigestDomain には認証を実装したいディレクトリのパスを入力します.
このパスは『.htaccess』を配置した場所からの相対パスであるため注意しましょう.
もう一つの可能性としてAuthUserFile に指定するパスが間違っているということが挙げられます.
こちらは『.htpasswd』ファイルが配置されている場所の絶対パスとなります.
MAMPの場合は
/Applications/MAMP/htdocs/~配置された場所まで~/.htpasswd
で大丈夫です.
ブラウザのキャッシュ削除
ブラウザに前のパスワードなどが残っているとうまく動かないとこがあります.
ブラウザのキャッシュを削除してみて,もう一度試してみましょう.
また,一度ログインが完了すると『キャッシュを削除』または『ブラウザを閉じる』までログインが有効となります.
ポップアップが表示されないときはブラウザのキャッシュを削除するかブラウザを一度閉じてみましょう.
パスワードがハッシュ化されていない
Basic認証と同様にDigest認証も『.htpasswd』内のパスワードはハッシュ化されていなければなりません.
ターミナルで以下のコマンドを打ち『.htpasswd』ファイルを作成する.
htdigest -c /Applications/MAMP/htdocs/~配置された場所まで~/.htpasswd "認証の名前" ユーザーネーム
または,パスワードハッシュ化ツールを用いてハッシュ化しましょう.
まとめ
今回は自分がDigest認証を行なった時の解決策と他に考えられる原因を紹介しました.
参考になれば幸いです.
コメント