restringir requireany por httpd granted from deny conf allowoverride allow all ah01626 acceso .htaccess apache2 http-basic-authentication

.htaccess - requireany - httpd conf allow deny



.htaccess/.htpasswd bypass si se encuentra en una determinada dirección IP (5)

¿Es posible tener una configuración de control de acceso .htaccess / .htpasswd para un directorio determinado, pero si son de una dirección IP específica, omita la autenticación de inicio de sesión / contraseña?

Sé que puedes hacer algo como esto en el archivo .htaccess:

order deny,allow deny from all allow from 000.000.000.000

Pero si agrega algo en esta línea:

AuthType Basic AuthName "restricted area" AuthUserFile /path/to/.htpasswd require valid-user

Luego solicita la contraseña. ¿Hay alguna manera de hacer una instalación tipo if / else, o alguna otra solución para que los usuarios como una IP dada (o conjunto de IP) no reciban una contraseña, pero todos los demás sí?


Además de la respuesta 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


Estoy ejecutando Apache / 2.2.16 (Debian), y tuve un problema similar, lo resolví así:

(Esto se puede ejecutar en un archivo .htaccess o directamente en el host virtual en <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

Permití la entrada sin contraseña desde dos direcciones IP diferentes, y el resto debe ingresar la contraseña para ingresar.


Para la versión 2.2.X puede usar lo siguiente ...

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

Obviamente, reemplace la ruta a su archivo de usuario y la dirección IP que le gustaría omitir la autenticación.

Puede encontrar más explicaciones sobre los detalles en: http://httpd.apache.org/docs/2.2/howto/auth.html


Si usa apache> = 2.4 y desea permitir un conjunto de IP, como se le preguntó en la pregunta inicial, puede hacerlo así:

<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>


Si usa apache> = 2.4, sería algo como esto:

<If "%{REMOTE_ADDR} != ''127.0.0.1''"> AuthType Basic AuthName "restricted area" AuthUserFile /path/to/.htpasswd require valid-user </If>

Para obtener más información, eche un vistazo a los docs .