Necesito excluir una URL (o incluso mejor un prefijo) de la protección normal de autenticación básica de htaccess. Algo como /callbacks/myBank
o /callbacks/.*
¿Tienes alguna pista de cómo hacerlo?
Lo que no estoy buscando es cómo excluir un archivo. Esta tiene que ser una URL (ya que esta es una solución basada en el marco PHP, y todas las URL se redirigen con mod_rewrite
a index.php
). Entonces no hay ningún archivo bajo esta URL. Nada.
Algunas de esas URL son solo devoluciones de llamada de otros servicios (no se conoce ninguna IP, por lo que no puedo excluir según la IP) y no pueden solicitar Usuario / Contraseña.
La definición actual es tan simple como:
AuthName "Please login."
AuthGroupFile /dev/null
AuthType Basic
AuthUserFile /xxx/.htpasswd
require valid-user
fuente
%{REQUEST_URI}
valor es la cadena reescrita. Para Cake 3, eso termina siendo casi siempre/webroot/index.php
. Es posible que deba idear un enfoque alternativo, como usar Cake para manejar la autenticación de rutas.Usando SetEnvIf , puede crear una variable cuando la solicitud comience con alguna ruta, luego use la
Satisfy Any
directiva para evitar tener que iniciar sesión.El grupo de directivas permitir / denegar dice que niega el acceso a TODOS , excepto cuando hay un usuario válido (inicio de sesión de autenticación BÁSICO exitoso) o si la
noauth
variable está configurada.fuente
Order deny,allow
y no funcionaría. ¡No hace falta decir que muy frustrante!Allow from env=REDIRECT_noauth
URL reescrita. Podría haber sido el problema con @vishal. Eche un vistazo aquí: [ stackoverflow.com/a/41092497/1285585]Allow from env=noauth
yAllow from env=REDIRECT_noauth
que funcione.Esta solución funciona bastante bien, solo necesita definir la lista blanca por la que desea pasar.
fuente
Probé las otras soluciones, pero esto es lo que funcionó para mí. Ojalá sea de ayuda para otros.
Esto permitirá que la URL de la API y cualquier cadena de URL posterior se
/index.php/api/
abran sin tener que iniciar sesión y se le pedirá que inicie sesión.Ejemplo:
mywebsite.com/index.php/api
se abrirá sin que se le solicite que inicie sesiónmywebsite.com/index.php/api/soap/?wsdl=1
se abrirá sin que se le solicite que inicie sesiónmywebsite.com
se le pedirá que inicie sesión primerofuente
fuente
Otro enfoque funciona así, si el área que está protegiendo tiene un script PHP monolítico controlando todo, como Wordpress. Configure la autenticación en un directorio diferente. Coloque allí un index.php que establezca una cookie en la ruta '/'. Luego, en Wordpress (por ejemplo), verifique la cookie, pero omita la verificación si $ _SERVER ['REQUEST_URI'] es la URL excluida.
En mi plataforma de alojamiento compartido, RewriteRule no pudo establecer una variable de entorno que funcionara con "Satisfacer cualquiera".
Con cualquier enfoque, tenga cuidado de que la página que está protegiendo no incluya imágenes, hojas de estilo, etc., que desencadenan una solicitud de autenticación cuando la página en sí no lo hace.
fuente
Agregue el siguiente código a su archivo htaccess raíz y no olvide cambiar su URL de administrador, página de archivo .htpasswd.
Cree el archivo .htpasswd en su carpeta raíz y agregue el nombre de usuario y la contraseña a continuación (establezca el nombre de usuario predeterminado: admin y contraseña: admin123)
Por favor, avíseme si aún tiene algún problema.
fuente
¿Por qué no utilizas la autenticación básica de la forma prevista?
fuente