2017-05-17 3 views
0

J'ai un Apache 2.2 configuré avec l'autorisation LDAP, qui fonctionne de manière fantastique comme prévu, et qui a également fait en sorte que je puisse contourner l'authentification quand j'y accède localement.Apache 2.2 Permettre de env = _variable_

Allow fromlocalIPhostnameAhostnameB, etc ...

Si je curl du serveur, je ne reçois pas de Auth requis. Donc tout va bien et fonctionne comme prévu.

Ce dont j'ai besoin maintenant est de faire une URL particulière pour contourner également l'autorisation.

J'ai essayé toute la solution habituelle d'utilisation SetEnvIf;

SetEnvIf Request_URI "^/calendar/export" bypassauth=true` 
Allow from env=bypassauth IP_ADDRESS HOSTNAME_A HOSTNAME_B 

Mais cela ne fonctionne tout simplement pas !!

  1. L'accès local est toujours sans restriction, mais à distance, il est pas (pas de changement là-bas)
  2. Si je vide mes variables d'environnement du serveur sur le script de cette URL, je peux voir ma variable bypassauth est passé.

Je ne peux tout simplement pas comprendre pourquoi la partie Allow from env=bypassauth ne fonctionne pas, alors qu'elle obéit encore aux paramètres supplémentaires de la directive.

J'ai aussi essayé une autre suggestion, en utilisant la directive Location;

<Location /calendar/export> 
    Satisfy Any 
    Allow from all 
    AuthType None 

    SetEnv WTF 123 
</Location> 

Encore une fois, je peux voir ma nouvelle variable d'environnement (WTF) apparaissent sur cette URL (quand je jetai le serveur envs dans le script), donc je sais que les SetEnv et SetEnvIf directives travaillent.

Y a-t-il quelque chose qui me manque (toutes les bizarreries d'Apache2.2?), Car toutes les solutions que j'ai vues jusqu'ici ne fonctionnent tout simplement pas. C'est comme si mes changements de Allow from n'avaient aucun effet après le redémarrage d'Apache. Je commence à sentir ma santé mentale.

Existe-t-il également un ordre particulier lors de l'écriture des directives pour Satisfy Any, Order allow, deny et les directives Auth*, qui pourraient affecter cela?

Répondre

0

Enfin réussi à comprendre !! :)

qe ma url est en cours de traitement par mod_rewrite (ma variable d'environnement étant préfixé par REWRITE_ devrait avoir la sonnette d'alarme retentissaient) qui, selon ce poste https://stackoverflow.com/a/23094842/4800587, le mod_rewrite est effectué après nos SetEnvIf et Allow directives.

Quoi qu'il en soit, long histoire courte; J'ai utilisé l'URL réécrite/finale et la section Location pour contourner l'authentification à l'aide de la directive Allow any. J'ai donc changé ...

<Location "/calendar/export"> 
    Allow from all 
</Location> 

..

<Location "/calendar/index.php/export"> 
    Allow from all 
</Location> 

qui est l'URL finale (après réécriture), et fonctionne maintenant.