En su día, en el artículo de trucos sobre .htaccess vimos como configurar la autenticación (solicitando usuario y password) para un directorio dentro de un website (o para el website completo). En este caso lo que vamos a hacer es proteger un directorio pero excluir una IP o rango CIDR para que pueda acceder al mismo saltando esta protección.
Partimos de la base de que tenemos configurado en nuestro website, dentro del fichero .htaccess (o a nivel de virtualhost) la autenticación para todos los usuarios:
AuthType Basic AuthName “Prompt” AuthUserFile /var/webs/test.com/.htpasswd Require valid-user
Ahora queremos que todos los visitantes se autentiquen excepto los que provengan de la IP 192.168.1.128:
AuthType Basic AuthName “Prompt” AuthUserFile /var/webs/test.com/.htpasswd Require valid-user Order allow,deny allow from 192.168.1.128 satisfy any
La directiva satisfy any permite, tanto para la autenticación como el acceso, que en el momento que se cumpla uno de los requerimientos se permita la petición, haciendo así bypass de la autenticación. Si por el contrario, se quisiera que se cumplieran todos los requerimientos para acceder usaríamos satisfy all.
Podríamos tambien permitir rangos completos, denegar a IPs o CIDR, etc
allow from 192.168.1 allow from 192.168.1.0/24 ...
Justo lo que andaba buscando. Muchas gracias por compartir informacion de manera desinteresada.
Saludos.