.htaccess /.htpasswd bypass si à une certaine adresse IP
Est-il possible d'avoir un .htaccess/.htpasswd access control setup pour un répertoire donné, mais s'ils proviennent d'une adresse IP spécifique, contourner l'authentification login/password?
je sais que vous pouvez faire quelque chose comme cela dans la .htaccess:
order deny,allow
deny from all
allow from 000.000.000.000
mais si vous ajoutez quelque chose dans ce sens:
AuthType Basic
AuthName "restricted area"
AuthUserFile /path/to/.htpasswd
require valid-user
alors il invite pour le mot de passe. Y a-t-il un moyen de faire une configuration si/else type, ou une autre solution de sorte que les utilisateurs comme une IP donnée (ou ensemble d'adresses ip) ne sont pas invité à entrer un mot de passe, mais tout le monde le fait?
6 réponses
pour les versions 2.2.X vous pouvez utiliser ce qui suit...
AuthUserFile /var/www/mysite/.htpasswd
AuthName "Please Log In"
AuthType Basic
require valid-user
Order allow,deny
Allow from xxx.xxx.xxx.xxx
satisfy any
évidemment remplacer le chemin vers votre usersfile et l'adresse ip que vous souhaitez contourner l'authentification.
de plus amples explications sur les détails, peuvent être trouvées à:http://httpd.apache.org/docs/2.2/howto/auth.html
J'exécute Apache / 2.2.16 (Debian), et j'ai eu un problème similaire, Je l'ai résolu comme ceci:
(ceci peut être exécuté dans les deux an .htaccess file ou directement dans le serveur virtuel sous <Location/>
)
Order deny,allow
Deny from all
AuthType Basic
AuthUserFile /home/somesite/.htpasswd
AuthName "No entry, unless"
Require Valid-user
Allow from x.x.x.x
Allow from x.x.x.x
Satisfy Any
j'ai autorisé l'entrée sans mot de passe à partir de deux ip différentes, et le reste doit entrer mot de passe pour entrer.
si vous utilisez apache > = 2.4, et que vous voulez autoriser un ensemble D'IP, comme demandé dans la question initiale, vous pouvez le faire comme ceci:
<If "-R '192.168.0.0/24'">
Require all granted
</If>
<ElseIf "-R '192.168.1.0/24'">
Require all granted
</ElseIf>
<Else>
AuthType Basic
AuthName "restricted area"
AuthUserFile /etc/apache2/.htpasswd
require valid-user
</Else>
En plus de la réponse de j5Dev:
# Interne IP-Adressen
SetEnvIf Remote_Addr "^127\.0\.0\.1$" IsIntern
SetEnvIf Remote_Addr "^192\.168" IsIntern
# .. add more IP addresses or ranges here
# Authentication, wenn nicht intern
AuthUserFile /path/to/.htpasswd
AuthName "restricted area"
AuthType Basic
require valid-user
Order allow,deny
Allow from env=IsIntern
satisfy any
compatible Apache 2.4:
AuthType Basic
AuthUserFile /www/.htpasswd
AuthName "Protected Area"
<RequireAny>
Require ip 1.2.3.4
Require valid-user
</RequireAny>
voir le guide de migration mise à jour de 2.4 à partir de 2.2 pour plus d'exemples.