Bonjour !

Je vous explique ma situation.

J'ai un serveur de développement protégé par authentification via Apache (/www inaccessible sans login/mdp).

Je veux enlever toute forme d'authentification sur un répertoire contenu dans /www pour certaines IP : exemple => /www/toto

Je rajoute donc la ligne qui va bien dans mon httpd.conf :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
<Directory "/home/monsite/www/toto">
            AuthType Basic
            AuthName "Restricted access"
            AuthUserFile /usr/local/apache2/passwds
            Require user admin
            AllowOverride All
Order allow,deny
            Options ExecCGI FollowSymLinks
            Allow from IP_1
            Allow from IP_2
            Allow from IP_3
            Satisfy any
 </Directory>
Jusque là tout va bien, je teste avec IP_1, je peux accéder à /www/toto/mon_script.php sans autorisation. C'est gagné !

Mais c'est là que les choses se corsent.

Ce fichier /www/toto/mon_script.php n'est pas censé être atteint en faisant une requête directement dessus. En effet, ce script est un gestionnaire d'API REST. En gros je redirige vers lui toutes les requêtes du style http://www.monsite.com/api/param1/param2 ... etc

Je fais donc cette redirection dans .htaccess avec quelque chose du style

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
RewriteEngine on
Options +FollowSymLinks
RewriteRule ^api/ toto/mon_script.php
La redirection en elle même fonctionne parfaitement bien, MAIS, si j'effectue une requête sur http://www.monsite.com/api/quelquechose avec IP_1, j'ai une demande d'authentification alors que la ressource réelle à laquelle il accède est "ouverte" !

Je résume
IP_1 : GET http://www.monsite.com/toto/mon_script.php => OK, pas d'authentification.
IP_1 : GET http://www.monsite.com/api/quelquechose (qui donc est redirigé vers http://www.monsite.com/toto/mon_script.php) => PAS OK, 401 - authentification requise.

Comment contourner l'authentification dans ce cas-là ?

Merci d'avance à ceux qui auront des éléments de réponse