web-dev-qa-db-fra.com

Comment dire à Apache de répondre avec 403 au lieu de 401?

Nous avons quelques règles pour un sous-arbre de Locations, qui impliquent Require- ing ldap-group et exprs.

L'utilisateur est dûment mis au défi de fournir des identifiants de connexion, qui sont vérifiés.

Toutefois, même lorsque les informations d'identification sont correctes et que l'accès est refusé pour d'autres raisons (telles que l'appartenance à un groupe incorrect ou une adresse IP incorrecte), la réponse du serveur est toujours 401 - au lieu de 403.

En conséquence, les navigateurs incitent les utilisateurs à "réessayer" ... Puis-je dire à Apache (2.4) d’utiliser 403, si les informations fournies dans l’en-tête Authorization- extraient, et c’est une autre règle, qui rejette la demande?

2
Mikhail T.

(Publier une copie de ma réponse sur défaut du serveur , à la demande de l'OP.)

Je pense que ce que vous voulez, c'est AuthzSendForbiddenOnFailure :

AuthzSendForbiddenOnFailure On

Contexte: répertoire, .htaccess

Si l'authentification réussit mais que l'autorisation échoue, Apache HTTPD répondra par défaut avec un code de réponse HTTP '401 UNAUTHORIZED'. Cela oblige généralement les navigateurs à afficher à nouveau le dialogue de mot de passe à l'utilisateur, ce qui n'est pas souhaitable dans toutes les situations. AuthzSendForbiddenOnFailure permet de changer le code de réponse en "403 INTERDIT".

Notez qu'il comporte un avertissement de sécurité:

Avertissement de sécurité

La modification de la réponse en cas d'absence d'autorisation affaiblit la sécurité du mot de passe, car elle révèle à un attaquant possible que son mot de passe deviné était correct.

2
Dan Lowe