Joomladay francophone 2018 à Paris 18 et 19 mai

Identification refusée depuis WAN, OK dans LAN

Réduire
X
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • Identification refusée depuis WAN, OK dans LAN

    Bonjour,

    Je me trouve face à un problème qui a apparemment déjà été abordé sous plusieurs angles, mais je n'ai pas encore trouvé de solution claire, d'autant qu'il ne s'agaissait jamais vraiment de ma config.
    Le cas échéant, mille excuses si c'est déjà décrit quelque part ...

    Ma config :
    -----------
    PHP hébergé sur: Windows NT WEB 5.1 build 2600
    Version Base de données: 4.1.9-max
    Version PHP: 4.3.10
    Serveur Web: Apache/1.3.33 (Win32)
    Interface serveur Web vers PHP: apache
    Version Joomla!: Joomla! 1.0.13 Stable [ Sunglow ] 21 July 2007 16:00 UTC
    Navigateur: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)

    Principaux paramètrages PHP: Joomla! Emulation de Register Globals : OFF
    Register Globals: ON
    Magic Quotes: ON
    Safe Mode: ON
    File Uploads: ON
    Session auto start: OFF
    Chemin sauvergarde session: E:\www\sessions\
    Short Open Tags: ON
    Output Buffering: OFF
    Open basedir: none
    Affichage des erreurs: OFF
    XML enabled: Yes
    Zlib enabled: Yes
    Disabled Functions: none



    Fichier de Configuration: <?php
    if(!defined('RG_EMULATION')) { define( 'RG_EMULATION', 0 ); }
    ...
    $mosConfig_absolute_path = 'e:/www/portail';
    $mosConfig_allowUserRegistration = '1';
    $mosConfig_cachepath = 'e:/www/portail/cache';
    $mosConfig_live_site = 'http://mon.url.com/portail';
    ?>



    Mon problème :
    --------------
    Impossibilité à quelque utilisateur de s'identifier sur mon portail lorsqu'il accède depuis internet :
    saisie du login / mot de passe + validation => retour à la page d'accueil avec le module login vierge.
    Pourtant, ça marche très bien lorsque ces mêmes utilisateurs s'identifient depuis une machine sur mon réseau LAN.


    Remarques :
    -----------
    - Mon portail fonctionne par ailleurs très bien en accès externe (accès aux articles, enregistrement des utilisateurs, ...).
    - J'arrive à me connecter depuis l'extérieur à la partie admin
    - Je suis en train de migrer d'un portail Nuke à Joomla, et je n'ai aucun problème pour m'identifier avec Nuke, même de l'extérieur.
    - Comme vous pouvez le constater, ma machine est un XP Pro, avec Apache, et Joomla est sur une partition E:
    - Enfin, j'ai un fichier .htaccess qui oblige les utilisateurs à passer une 1ere phase d'identification (qui n'a rien à voir avec celle des utilisateurs Joomla)


    Je soupçonne un problème de config quelque part.
    Merci pour vos idées, sachant que j'ai déjà essayé beaucoup de choses, mais sans doute pas le truc gros comme un éléphant que j'ai sous les yeux et que je ne vois pas ...
    Dernière édition par __LGS__ à 29/02/2008, 09h22

  • #2
    J'avance ...
    En fait, le login ne fonctionne pas de l'extérieur car la commande POST n'est jamais reçue par mon serveur APACHE.

    Voici les traces de mon log APACHE :

    Login de l'extérieur :
    ----------------------
    193.xxx.xxx.xxx - user [20/Feb/2008:19:49:17 +0100] "GET /portail/index.php HTTP/1.1" 200 17994



    Login de l'intérieur :
    ----------------------
    192.168.1.14 - user [20/Feb/2008:19:50:30 +0100] "POST /portail/index.php HTTP/1.1" 301 5
    192.168.1.14 - user [20/Feb/2008:19:50:32 +0100] "GET /portail/index.php HTTP/1.1" 200 18755

    La commande POST n'apparait donc jamais quand elle est initiée de l'extérieur.
    La commande GET suivante donc pour effet de recharger la page d'accueil sans qu'on soit indentifié.

    Pourtant, le formulaire de login /portail/administrator/ fonctionne parfaitement et une commande POST est bien reçue et loggée par APACHE.

    Ca sent vraiment la config APACHE ...

    Une idée ?

    Commentaire


    • #3
      Je le tiens !
      Ca vient de sefRelToAbs, mais je ne sais pas encore s'il s'agit d'un bug dans ou d'un pb de config.

      Le module login (mod_login.php) contient
      <form action="<?php echo sefRelToAbs( 'index.php' ); ?>" method="post" name="login" >

      Le code HTML généré est alors
      <form action="http://mon.url.com/portail/index.php" method="post" name="login" >

      Pour ma configuration, ça ne marche pas.

      Si je change le code php en
      <form action="index.php" method="post" name="login" >

      alors le code généré est
      <form action="index.php" method="post" name="login" >

      et là ô miracle, ça marche : j'arrive à me logguer.

      Ne désirant pas activer l'URL rewriting, j'ai laissé
      $mosConfig_sef = '0';

      J'avais déjà essayé de l'activer, en suivant les recommandations d'usage (modif du fichier .htaccess, activation de mod_rewrite, ...), mais ça ne changeait rien.

      Je suis preque convaincu qu'il s'agit d'un bug, car tout le reste de mon portail fonctionne et je pense que sefRelToAbs est utilisée à tour de bras.

      La piste que j'aie maintenant est que le vote des sondages ne fonctionne pas non plus.
      Et en fait, j'en viens à me demander si le problème ne serait pas dû au fait que le formulaire (login, sondage) fait un POST sur la même URL que la page sur laquelle est le formulaire (http://mon.url.com/portail/index.php), et que dans ce cas particulier, quelque chose échoue.

      A suivre, je continue d'investiguer, mais si quelqu'un peut me faire gagner du temps, je prends les conseils avec plaisir.

      Au pire des cas, j'irai modifier définitivement le code des modules Joomla là où j'ai des problèmes, mais si c'est un bug, autant en faire profiter tout le monde.

      Commentaire


      • #4
        J'ai réglé mon problème.
        Dans sef.php, pour une raison qui m'échappe, on reconstruisait l'URL complète si elle ne commençait pas par (entre autres) "http:".
        J'ai supprimé ces lignes de code comme ci-dessous pour garder telle quelle l'adresse relative "index.php", et tout fonctionne à merveille. Comme par miracle, le sondage marche également



        // Handling for when SEF is not activated
        // Relative link handling
        if ( (strpos( $string, $mosConfig_live_site ) !== 0) ) {
        ...
        } else {
        // MIS EN COMMENTAIRE POUR NE RIEN MODIFIER DANS L'URL
        // $check = 1;
        //
        // // array list of non http/https URL schemes
        // $url_schemes = explode( ', ', _URL_SCHEMES );
        // $url_schemes[] = 'http:';
        // $url_schemes[] = 'https:';
        //
        // foreach ( $url_schemes as $url ) {
        // if ( strpos( $string, $url ) === 0 ) {
        // $check = 0;
        // }
        // }
        //
        // if ( $check ) {
        // $string = $mosConfig_live_site .'/'. $string;
        }
        }
        }

        return $string;
        Dernière édition par __LGS__ à 29/02/2008, 09h20

        Commentaire


        • #5
          En fait, j'ai l'impression qu'il s'agit réellement d'un bug car la fonction sefRelToAbs qui est appelée partout dans le code Joomla ne devrait rien faire si la SEF n'est pas activée, ce qui est mon cas.


          J'ai donc modifié le code dans sef.php de la façon suivante :

          function sefRelToAbs( $string ) {
          global $mosConfig_live_site, $mosConfig_sef, $mosConfig_multilingual_support;
          global $iso_client_lang;

          // CODE AJOUTE
          if (!$mosConfig_sef)
          return $string;
          // FIN DU CODE AJOUTE

          //multilingual code url support
          ...

          RESTE DU CODE QUI N'EST PLUS TRAITE SI SEF N'EST PAS ACTIVEE


          Et tout fonctionne parfaitement maintenant.

          Commentaire

          Annonce

          Réduire
          1 sur 2 < >

          C'est [Réglé] et on n'en parle plus ?

          A quoi ça sert ?
          La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

          Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

          Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
          Comment ajouter la mention [Réglé] à votre discussion ?
          1 - Aller sur votre discussion et éditer votre premier message :


          2 - Cliquer sur la liste déroulante Préfixe.

          3 - Choisir le préfixe [Réglé].


          4 - Et voilà… votre discussion est désormais identifiée comme réglée.

          2 sur 2 < >

          Assistance au forum - Outil de publication d'infos de votre site

          Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

          Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

          Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

          UTILISER À VOS PROPRES RISQUES :
          L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

          Problèmes connus :
          FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

          Installation :

          1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

          Archive zip : https://github.com/AFUJ/FPA/zipball/master

          2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

          3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

          4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

          5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

          6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
          et remplacer www. votresite .com par votre nom de domaine


          Exemples:
          Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
          Télécharger le script fpa-fr.php dans: /public_html/
          Pour executer le script: http://www..com/fpa-fr.php

          Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
          Télécharger le script fpa-fr.php dans: /public_html/cms/
          Pour executer le script: http://www..com/cms/fpa-fr.php

          En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

          Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
          Voir plus
          Voir moins
          Travaille ...
          X