web-dev-qa-db-ja.com

Apacheに401ではなく403で応答するように指示するにはどうすればよいですか?

Locationsのサブツリーには、Require- ing ldap-groupおよびexprsを含むいくつかのルールがあります。

ユーザーは、認証されたログイン資格情報を提供するように適切にチャレンジされます。

ただし、資格情報が正しく、他の理由(間違ったグループに属している、または間違ったIPアドレスから来ているなど)によりアクセスが拒否された場合でも、サーバーの応答は常に403ではなく401です。

その結果、ブラウザはユーザーに「再試行」を促し続けます... Authorization- headerで提供された情報がチェックアウトされ、それが他のものである場合、403を使用するようApache(2.4)に指示できますかルール、それはリクエストを拒否しますか?

2
Mikhail T.

(OPのリクエストごとに サーバー障害に関する私の回答 のコピーを投稿します。)

あなたが望むのは AuthzSendForbiddenOnFailure

AuthzSendForbiddenOnFailure On

コンテキスト:ディレクトリ、.htaccess

認証は成功したが許可が失敗した場合、Apache HTTPDはデフォルトで「401 UNAUTHORIZED」のHTTP応答コードで応答します。これにより、通常、ブラウザーはユーザーにパスワードダイアログを再度表示しますが、これはすべての状況で必要なわけではありません。 AuthzSendForbiddenOnFailureでは、応答コードを「403 FORBIDDEN」に変更できます。

セキュリティ警告が付いていることに注意してください。

セキュリティ警告

権限が欠落している場合に応答を変更すると、パスワードのセキュリティが低下します。攻撃者に推測されたパスワードが正しいことを明らかにするためです。

2
Dan Lowe