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