IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

Redirection une fois authentifié


Sujet :

Apache

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 25
    Points : 16
    Points
    16
    Par défaut Redirection une fois authentifié
    Bonjour,
    Ma config actuelle Apache, Websphere, ldap

    Je voudrais avoir le fonctionnement suivant :
    navigateur => apache => websphere => ldap pour l'authentification puis à la seconde requête
    navigateur => apache =====> reverse proxy server si je suis authentifié.

    J'avais dans l'idée de positionner un cookie applicatif sur websphere et si ce cookie est detecté à la seconde requête, être dérouté sur un serveur proxy.

    je n'ai aucune idée sur la facon de faire (plugin, ...). D'autant que j'aurai à gérer la durée de vie du cookie.

    Pouvez-vous m'aider ?
    Jean-Pierre

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Tu dois pouvoir t'en sortir avec les variables d'environnement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # On detecte si le cookie applicatif existe = utilisateur authentifie sur WS
    SetEnvIf Cookie "nomdetoncookie" is_WS_authenticated=true
     
    # On redirige sur le proxy si 
    RewriteEngine on
    RewriteCond %{ENV:is_WS_authenticated} true
    RewriteRule (.*) /proxy/$1 [QSA,P,L]
     
    <Location /proxy>
        Order Deny,Allow
        Deny from all
        Allow from env=is_WS_authenticated
        ProxyPass /proxy/ http://cible/...
        ProxyPassReverse /proxy/ http://cible/...
    </Location>
    J'ai supposé que ce que tu appelles "reverse proxy server" était réalisé avec mod_proxy (donc ProxyPass et ses copains).

    Mais effectivement, il faut jouer avec la durée de vie du cookie. En gros, il faut synchroniser la durée de vie de la WebSphere avec ton cookie. Si la session WebSphere s'appuie sur un cookie "session" (i.e. qui ne reste qu'en mémoire vive du navigateur et qui est donc détruit et de facto invalide que lorsque le navigateur est fermé), dans ce cas, crée un cookie de ce genre. C'est facile, c'est le comportement par défaut. En revanche, si le cookie a une durée de vie limitée (genre 4 heures), il faut que tu calcules la durée de vie de ton cookie : soit tu mets 4 heures aussi, soit tu mets 4 heure moins le temps écoulé sur le serveur sans être authentifié. Je ne sais pas si c'est faisable.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 25
    Points : 16
    Points
    16
    Par défaut reverse proxy avec condition
    Bonjour cela ne marche pas vraiment. Voici mon fichier de configuration. J'ai du enlever les directives proxy du paragraphe Location car elles ne sont pas acceptées à l'intérieur (voici ce que j'ai trouvé :"the ProxyPass directive can take place only in server config, virtual host definition, and a directory block. Location is not mentionned...") :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    SetEnv is_WS_authenticated false
    SetEnvIf Cookie "myCookie" is_WS_authenticated=true
     
    #          Activation de la réécriture d'url
    RewriteEngine on
    RewriteLogLevel    9
    RewriteLog    logs/rewrite.log
     
    NameVirtualHost www.mydomain.com:80
     
    #</VirtualHost>
     
    <VirtualHost www.mydomain.com:80>
    ServerName www.mydomain.com
    ProxyRequests Off
    RewriteCond %{ENV:is_WS_authenticated} true
    Rewriterule (.*) /extranet/$1 [QSA,P,L]
     
    <Location /extranet>
            Order deny,allow
            Allow from all
            Allow from env=is_WS_authenticated
    </Location>
     
    ProxyPass               /extranet/ http://www.myextranet.com/extranet/
    ProxyPassReverse        /extranet/ http://www.myextranet.com/extranet/
     
    </VirtualHost>
    Mon problème vient du fait que si je commente/decommente les conditions de redirection sur cookie, je suis redirigé sur http://www.myextranet.com/extranet/.

    Enfin, je n'ai pas été suffisamment exhaustif dans ma demande car si je ne spécifie pas /extranet dans l'url, je voudrais être renvoyé sur le serveur www.mydomain.com (un autre serveur Web).

    D'avance merci de m'aider dans cette galère.

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    La redirection vient peut-être tout bêtement du flag P de la RewriteRule. Essaie sans, pour voir. Je peux essayer de tester de mon côté mais ça va mettre un moment pour que je monte mon environnement de test.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    Merci, ca marche super bien. en fait j'avais ecrit "allow from all" au lieu de "deny from all",
    C'était tout bête.

    Mon fichier de config est maintenant comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Rewriterule (.*) /extranet/$1 [QSA,P,L]
    Rewriterule (.*) /internet/$1 [QSA,P,L]
    <Location /extranet>
            Order deny,allow
            Allow from all
            Allow from env=is_WS_authenticated
    </Location>
    ProxyPass               /extranet/ http://www.myextranet.com/extranet/
    ProxyPassReverse        /extranet/ http://www.myextranet.com/extranet/
    <Location /internet>
            Order deny,allow
            Allow from all
    </Location>
    ProxyPass               /internet/ http://www.mysite.com/internet/
    ProxyPassReverse        /internet/ http://www.mysite.com/internet/
    Toutes ces directives fonctionnent impeccablement (excepté le RewriteLog, mais j'ai vu sur Internet que je n'étais pas le seul).

    Je voudrais rajouter deux règles pour rediriger ce qui vient en
    http://w6.site.fr/extranet/ ("/" avec rien derrière) et http://w6.site.fr/extranet/index.jsp
    vers http://www.mysite.com/internet/accueil.jsp.
    Donc au lieu d'appliquer la première règle qui m'aurait redirigé vers
    http://www.myextranet.com/extranet/ je suis redirigé vers une page d'accueil
    spécifique sur un autre site (www.mysite.com/internet/accueil.jsp)
    Est-ce possible et si oui comment le faire ?
    (merci encore pour le coup de main la dernière fois).
    Jean-Pierre

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    J'avoue ne pas trop savoir. Je dirais qu'il faut gruger pour "sortir du giron" du ProxyPass /extranet. Ajouter ceci au début de la conf, pour voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    RewriteCond %{REQUEST_URI} ^/extranet/$ [OR]
    RewriteCond %{REQUEST_URI} ^/extranet/index.jsp$
    RewriteRule .* /extranet_home [L]
     
    ProxyPass /extranet_home http://www.mysite.com/internet/accueil.jsp
    ProxyPassReverse /extranet_home http://www.mysite.com/internet/accueil.jsp

Discussions similaires

  1. Modifier le PATH une fois pour toute
    Par elitost dans le forum Linux
    Réponses: 8
    Dernier message: 06/09/2009, 13h21
  2. [Thread]run une fois et plus apres
    Par maxvador dans le forum Concurrence et multi-thread
    Réponses: 4
    Dernier message: 29/12/2004, 15h31
  3. [Initialisation] Remplir une structure une fois
    Par Kimael dans le forum Langage
    Réponses: 14
    Dernier message: 08/06/2004, 15h33
  4. Pb : malloc qui marche une fois sur deux .... ?
    Par guillaume_pfr dans le forum C
    Réponses: 14
    Dernier message: 21/07/2003, 09h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo