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 :

Problème d'authentification client sur serveur Apache


Sujet :

Apache

  1. #21
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 26
    Points : 2
    Points
    2
    Par défaut
    Effectivement tu as raison, même si je fais un user "aaa" tout ce qu'il y a de plus basique et qui existe dans la base, il me retourne la même chose
    Tu crois que si je le menace de couper le courant il acceptera d'être plus coopératif ? Saleté de bourrique... pourquoi il veut pas mettre le nom de user...

    En y regardant de plus près, je réalise que le client n'envoie pas le nom d'user en même temps que le POST login.php.
    Il envoie le nom du user uniquement sur la requête suivante applog.php, et maintenant la réponse est beaucoup plus fournie avec tes modifs, je la copie et te la mets.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $..POST /applog.php H TTP/1.1. .Content -Type: application/x-www
    -form-urlencoded..User-Agent: applicationcenter..Host: game.application.net. .Content-Length:  556..Cache-Cont rol: no-cache... .&submodule=HTTP AuthRequest&modu le=CApplicationCenterDlg&logname=xml%5Fparse%5Ffailed&app=center&comment=%27%3C%3F xml+version%3D%2 21%2E0%2+encoding%3D%22utf%2D8% 22%3F%3E%0A%3Cus ername%5Fauth%5F failed%3A+select +usr%5Fpassword% 2Cusr%5Fd%2Cusr %5Fvalid%2Cusr%5 Flocked%0A++++++ ++++from+base1%2 Euser%0A++++++++ ++where+usr%5Fus ername%3D%27%27% 2F%3E%0A%27%0AEr ror%3A+Error+0xC 00CE501+on+line+ 2%2C+position+31 %0D%0AReason%3A+ Le+signe
    +d%27%E9 galit%E9+est+abs ent+entre+l%27at tribut+et+la+val eur+de+l%27attri but%2E%0D%0A&arg 1=username&arg2=NULL& arg3=NUL L&versio n=v2%2E0%2E11

    Donc ce qui est bizarre, c'est que dès la première requête POST login.php, le serveur répond auth_failed, le client n'ayant pas encore eu le temps d'envoyer le login, c'est pour ça que je pensais que c'était peut-être un problème d'Apache.
    Ne serait-il pas possible que la version 1.3 d'Apache ait un fonctionnement différent sur le HTTPAuth qui ferait que ça bugge direct sur Apache2 ?

    De toutes façons j'y comprends vraiment rien, c'est étrange que je tape nom d'user et mot de passe, et que le client n'envoie que le nom d'user (et encore pas dès la première requête).

    Bon, il serait raisonnable que j'aille me coucher car mes enfants ne vont pas tarder à se lever maintenant ^^

    Merci beaucoup pour ton aide, en espérant que tu pourras continuer de m'aider, ravi d'avoir enfin l'impression d'avancer sur ce point. J'ai bon espoir que le bout du tunnel soit proche si on arrive à régler ce problème d'identification.

    Bonne nuit

  2. #22
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 26
    Points : 2
    Points
    2
    Par défaut
    En regardant dans phpmyadmin, je trouve la même info mais en beaucoup plus lisible que la conversation sniffée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    '<?xml version="1.0" encoding="utf-8"?>
    <username_auth_failed: select usr_password,usr_id,usr_valid,usr_locked
              from base1.user
              where usr_username=''/>
    '
    Error: Error 0xC00CE501 on line 2, position 31
    Reason: Le signe d'égalité est absent entre l'attribut et la valeur de l'attribut.
    En espérant que ça aide. J'aimerais tant réussir enfin à régler ce problème (vu que j'ai l'espoir que ce soit enfin le dernier truc bloquant (l'espoir fait vivre !).

    Merci à tous ceux qui m'ont lu.

  3. #23
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 26
    Points : 2
    Points
    2
    Par défaut
    Désolé de vous saouler avec mon problème, mais je me demandais, vu que l'appli d'origine tournait sur Apache 1.3 et que j'essaie de la faire tourner sur Apache 2, est-ce que ça ne pourrait pas être un simple problème de compatibilité de ce côté ? Il me semble comprendre qu'il fait appel à http-auth, c'est peut-être ça qui buggue non ? Bien que les logs d'Apache ne font apparaitre aucune erreur, ce qui semblerait exclure qu'il s'agit d'un problème dans Apache...
    Enfin bref, je vous avoue que ça dépasse de loin mes compétences et que je suis franchement largué, mais vraiment motivé à faire marcher cette identification.
    Merci d'avance aux motivés qui voudront bien m'aider (en espérant qu'il y en ait au moins un !).
    Bon dimanche

  4. #24
    Invité
    Invité(e)
    Par défaut
    Salut,

    As-tu accès au code du client?

  5. #25
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 26
    Points : 2
    Points
    2
    Par défaut
    Oui, j'ai les fichiers de dev, après reste à savoir à partir de quels fichiers il a été compilé, il y a pleins de versions différentes et c'est un foutoir sans nom dans les fichiers de dev. Si tu me dis quoi chercher je peux toujours tenter...
    Je crois que j'avais trouvé le fichier/module "CenterDlg" (64ko quand même !), celui-ci appelle aussi un plus petit fichier nommé "login", ils sont codés en C++ je crois.

    Tu ne penses pas que ça peut juste être apache qui pose problème ? Je crois que je vais essayer de désactiver plusieurs modules d'auth, sur les fichiers de dev, il ne semblait y avoir que auth-anon d'activé, alors que sur mon apache actuel ils sont tous activés...

    Au fait, ça fait plaisir de te voir, merci de ta persévérance

  6. #26
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 26
    Points : 2
    Points
    2
    Par défaut
    Dans les sources du client, il est fait mention à login.php et applog.php dans un fichier nommé HttpPostRequest, voici ce que contient ce fichier :
    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
    #define LOG_URL "http://game.application.net/applog.php"
    #define LOGIN_PAGE "members/login.php"
    #define LOGOUT_PAGE "members/logout.php"
     
    class CHttpPostRequest
    {
    public:
    	CHttpPostRequest(void);
    	~CHttpPostRequest(void);
     
    	virtual bool PostRequest(CString url,  const CMapStringToString& args, CStringArray & result,
    		int *httpCode=NULL,const CString *user=NULL,const CString *pass=NULL,bool https=false);
    	virtual void Log(const CString& app,const CString& module,const CString &subModule,
    							 const CString &logName,const CString& arg1,
    							 const CString& arg2,const CString& arg3,
    							 const CString& comment);
    	static CString BuildParamListString(const CMapStringToString& args,bool post);
    	static CString URLEncode(CString sIn);
    	static void ExtractObject(CString & szUrl, CString &szObject);
     
     
    private:
     
    	static BYTE toHex(const BYTE &x);
     
    	BOOL SecureSend(CHttpFile *pHttpFile,const CString &strHeaders,const CString &szFormData);
    };
    Il est aussi fait mention dans un fichier nommé "gamession" dont voici tout le code :
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    #define LOGIN_URL "http://center.application.net/members/login.php"
    #define CREATE_ACCOUNT_URL "http://center.application.net/secure/createaccount.php"
    #define CHECK_LICENSE_KEY_URL "http://center.application.net/secure/checklicensekey.php"
    #define CONFIM_MAIL_URL "http://center.application.net/members/confirmmail.php"
    #define REMINDER_URL "http://center.application.net/reminder.php"
    #define CHANGE_PERSONAL_INFOS_URL "http://center.application.net/members/changepersonalinfos.php"
    #define CHANGE_PASSWORD_URL "http://center.application.net/members/changepassword.php"
    #define STOLEN_PASSWORD_URL "http://center.application.net/secure/stolenpassword.php"
    #define ACTIVATE_KEY_URL "http://center.application.net/secure/activatekey.php"
     
     
    #include "xmldom.h"
    #include "HttpPostRequest.h"
     
    enum LoginAction;
     
    // CGameSession command target
     
    class CGameSession 
    {
    public:
    	CGameSession();
    	virtual ~CGameSession();
     
    	virtual void SetMainWindow(CWnd *msgWin);
    	virtual bool Login();
    	//virtual bool LoginPassClear(const CString &login,const CString &pass);
    	//virtual bool LoginPassCrypted(const CString &login,const CString &passCrypted);
    	virtual void Logoff();
    	virtual bool IsLogged();
    	virtual void SetLogPass(const CString &login,const CString &passDigest);
     
    	virtual CString GetLogin();
     
    	//virtual bool HTTPRequest(const CString &URL,XMLDom &xml);
    	virtual bool HTTPPostRequest(CString url,  const CMapStringToString& args, CStringArray & result);
    	virtual bool HTTPAuthRequest(const CString &URL,XMLDOM &xml);
    	virtual bool HTTPAuthRequest(const CString &urlStr,const CMapStringToString &params,XMLDOM &xml);
     
    	virtual void LogCenter(const CString& module,const CString &subModule,
    							 const CString &logName,const CString& arg1,
    							 const CString& arg2,const CString& arg3,
    							 const CString& comment);
     
    	virtual bool IsUpToDate(bool &upToDate);
    	virtual bool CreateAccount(const CString &nickname,const CString &pass,
    		const CString &firstName,const CString &lastName,const CString &old,
    		const CString &mail,const CString &key,const CString &language,bool newsLetter,const CString &slId,CString& result);
     
    	virtual bool PasswordReminder(const CString &mail,const CString &language);
    	virtual bool CheckLicenseKey(const CString &key,const CString &language,CString &result,CString &location,CString &product,CString &mail,bool &canCreateAccount);
    	virtual bool ChangePersonalInfos(const CString &firstName,const CString &lastName,const CString &old,
    		const CString &mail,bool newsletter,const CString &language);
    	virtual bool StolenPassword(const CString &user,const CString &key,const CString &pass,CString &result);
    	virtual bool ChangePassword(const CString &oldPass,const CString &newPass,bool &badOldPass);
    	virtual bool ActivateKey(const CString &key,const CString &login,const CString &pass,const CString &slId,CString &result);
     
     
    private:
    	CInternetSession session;
    	CHttpPostRequest httpPost;
    	bool logged;
    	CString login,pass;
    	CWnd *msgWin;
     
    	CString urlStrTh;
    	DWORD msgTh;
     
     
    	/*bool InitAuth(CString &sessionID);*/
     
    	LoginAction LogGUI(const CString &message,const CString &initLogin,
    				   CString &login,CString &pass);
    	/*bool FileAuthRequest(XMLDOM &xml,const CString &url,const CString &currentLogin,
    		const CString &currentPassDigest,bool &authOk,bool &confirmAccountOk,
            CString &confirmMail);*/
     
     
    	//void ExtractObject(CString & szUrl, CString &szObject);
    	void ConfirmAccountDialog(const CString &login,const CString &pass,const CString &mail,const CString &language);
    	bool ReadLoginAndPassword(const CString &lastLogin,CString &login,CString &pass);
    	//bool HTTPAuthRequestPrivate(const CString &urlStr,const CMapStringToString &params,XMLDOM &xml);
    };
    En espérant que ça aide...

    En fait si j'insiste tant en demandant si ce ne serait pas simplement la config d'Apache qui bloque, c'est que ce code était censé fonctionner en l'état à l'époque où l'ancien serveur (apache 1.3) marchait.

    Je continue de fouiller dans les sources du client voir si j'arrive à trouver d'autres choses intéressantes.

  7. #27
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 26
    Points : 2
    Points
    2
    Par défaut
    Bon après avoir essayé de comprendre pendant encore des heures, regardé divers trucs, mieux compris le fonctionnement du truc grâce aux questions et pistes données par Mygale1978 il y a clairement un truc qui me parait super bizarre...

    La première requête du client "POST members/login.php" devrait contenir au moins mon username non ?
    Ou bien la raison est-elle que dans un premier temps il poste dans le vide puis il donne les infos lors du POST applog.php ? En effet ce post là contient l'username (pas le mot de passe par contre)... je suis totalement largué


    Edit : Bon j'ai installé php-cli pour essayer de voir si j'arrivais à arracher un auth_ok au serveur, et il se trouve qu'en envoyant un POST avec les 3 bons arguments, ça fonctionne, le serveur me répond "auth_ok".
    La bonne nouvelle c'est que j'ai progressé dans ma compréhension du php et du http, la mauvaise c'est qu'il semblerait que ça implique que le client ne fonctionne pas bien et n'envoie pas une requête correcte
    Ce qui me semble plutôt inquiétant non ?
    Vous pensez que c'est ça ou non ? Ça me semble étrange car le client était censé fonctionner... snif snif...

    La première fois que j'essaie d'identifier le client, il n'envoie que l'argument "language=french" et pas arg1 (login) et arg2 (pass). Ensuite le serveur répond auth_failed mais il envoie aussi un cookie qui sera ensuite envoyé par le client à chaque tentative de connexion, mais la première fois que le client poste login.php il n'y a pas de cookie.

  8. #28
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 26
    Points : 2
    Points
    2
    Par défaut
    Désolé pour le up intempestif, mais j'ai toujours espoir qu'une âme charitable veuille bien m'aider (d'autant que je peux vous jurer que c'est vraiment pour la bonne cause et que si ça marche ça nous fera un très beau nouveau Logiciel Libre, un jeu qui plus est).

    J'ai peut-être du nouveau :
    Ayant suivi le conseil de Mygale1978, j'ai mis Apache en debug, en refaisant un test de connexion du client à l'instant, j'ai cette erreur qui s'est affichée, je ne sais pas si c'est en rapport, mais j'imagine que oui car l'heure correspond exactement à celle où j'ai tenté la connexion alors que l'errorlog n'indique rien les deux heures précédentes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [Tue Jan 12 22:06:36 2010] [debug] proxy_util.c(1801): proxy: grabbed scoreboard slot 0 in child 4146 for worker proxy:reverse
    [Tue Jan 12 22:06:36 2010] [debug] proxy_util.c(1820): proxy: worker proxy:reverse already initialized
    [Tue Jan 12 22:06:36 2010] [debug] proxy_util.c(1914): proxy: initialized single connection worker 0 in child 4146 for (*)
    [Tue Jan 12 22:06:37 2010] [debug] proxy_util.c(1801): proxy: grabbed scoreboard slot 0 in child 4148 for worker proxy:reverse
    [Tue Jan 12 22:06:37 2010] [debug] proxy_util.c(1820): proxy: worker proxy:reverse already initialized
    [Tue Jan 12 22:06:37 2010] [debug] proxy_util.c(1914): proxy: initialized single connection worker 0 in child 4148 for (*)
    [Tue Jan 12 22:06:37 2010] [debug] proxy_util.c(1801): proxy: grabbed scoreboard slot 0 in child 4149 for worker proxy:reverse
    [Tue Jan 12 22:06:37 2010] [debug] proxy_util.c(1820): proxy: worker proxy:reverse already initialized
    [Tue Jan 12 22:06:37 2010] [debug] proxy_util.c(1914): proxy: initialized single connection worker 0 in child 4149 for (*)
    En espérant que quelqu'un soit motivé pour m'aider, merci de m'avoir lu.

    Edit : en réessayant dix minutes plus tard, je ne comprends pas, ce coup-ci l'errorlog ne mentionne rien, j'y comprends rien

  9. #29
    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 conversation est très longue et technique, pas facile de rattraper, donc désolé si je suis à côté de la plaque.

    Si j'ai bien compris, le login se récupère la première fois avec $_SERVER['PHP_AUTH_USER']. Or, ce truc suppose 2 choses (cf. la doc PHP) :
    Lorsque vous utilisez PHP avec Apache ou IIS (ISAPI en PHP 5) en tant que module faisant une identification HTTP, cette variable est définie à l'utilisateur fourni par l'utilisateur.
    Donc si PHP n'est pas intégré à Apache en tant que module ou si tu ne fais pas une authentification HTTP (basique ou digest), $_SERVER['PHP_AUTH_USER'] sera inexistant, d'où l'erreur. Visiblement, à voir tes captures réseau du début, le client essaie de s'authentifier en envoyant le login et le mot de passe en tant que données d'un formulaire : c'est tout sauf une authentification HTTP qui suppose plutôt d'utiliser un en-tête HTTP Authorization. D'où que je comprends que l'authentification ne marche pas. Mais je peux me tromper

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  10. #30
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 26
    Points : 2
    Points
    2
    Par défaut
    Génial, tu sembles avoir une piste intéressante (du moins c'est ce que j'ai cru en comprendre), je ne suis pas sûr de comprendre tous les tenants et aboutissants de ce que tu dis, mais je vais m'y pencher très sérieusement.

    Bien que je progresse dans ma compréhension de tout ceci, j'avoue me sentir plutôt largué, heureusement que des gens comme toi ou Mygale parviennent à m'aider.

    Que préconiserais-tu concernant mon problème, aurais-tu des pistes à essayer ?
    Penses-tu que ce problème apparaisse parce que je suis passé sur du Apache 2 alors que l'appli tournait à la base sur du 1.3 ?

    Concernant PHP, j'aurais tendance à dire qu'il est intégré en tant que module, mais je ne suis pas sûr de bien comprendre ce que tu dis à ce propos.
    En fait, la seule chose dont je sois certain, c'est que la façon dont le client sollicitait le serveur du temps où il était sur 1.3 fonctionnait, ainsi je ne cherche pas à modifier le comportement du client mais à configurer Apache 2 de manière à ce qu'il arrive à répondre comme l'attend le client. Reste à voir si c'est possible. J'ai lu plusieurs fois la doc Apache sur HttpAuth, sur les authentification en général, mais je ne comprends pas vraiment ce que je serais censé faire.

    Je ne sais pas si l'info est utile, mais dans les fichiers de dev, il y a une install d'easyphp avec laquelle l'appli a été créée visiblement, le seul module qui ait semblé être ajouté était auth-anon.

    Je dois bientôt filer au boulot mais je viendrais régulièrement regarder ce fil et je m'y attaque très sérieusement ce soir en rentrant.

    En tous cas merci beaucoup pour ta réponse et pour le temps passé à lire mes pavés indigestes.

  11. #31
    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
    Le problème, si c'est celui que j'ai identifié, est indépendant de la version d'Apache.

    Est-ce que l'ancienne application fonctionne toujours quelque part ? Y a-t-il moyen de faire des captures réseau sur cette ancienne application ? Si tu ne sais pas ou si la réponse est négative, est-ce que le code du client que tu as donné est celui de l'ancienne version qui marchait ? Si oui, cela veut dire qu'on ne peut effectivement pas utiliser $_SERVER['PHP_AUTH_USER']. Dans ce cas, le contournement me semble simple : utiliser $_POST["arg1"] à la place de $_SERVER['PHP_AUTH_USER'] (et $_POST["arg2"] à la place de $_SERVER['PHP_AUTH_PW']). Mais pour des raisons de sécurité, il faudrait s'assurer que ce code qui consiste à récupérer le login et le mot de passe ainsi n'est fait que sur la page PHP d'authentification.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  12. #32
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 26
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup pour ces pistes.

    Non l'ancienne version ne tourne plus nulle part, donc pas moyen de faire une comparaison.

    A priori la version que j'utilise est exactement la même que celle qui marchait à l'époque.

    Je viens d'essayer de remplacer les lignes que tu as mentionnées, mais ça ne semble pas fonctionner. Je réessaierais ce soir à tête plus reposée, j'essaierais diverses choses et reviendrais vous dire ce qu'il en est car j'ai fait ça vite vu que je dois partir.

    Merci beaucoup pour ces pistes qui me redonnent espoir

  13. #33
    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
    Pour le debug, dans ta fonction qui renvoie le message d'erreur XML, ajoute un dump des variables $_SERVER et $_POST (avec print_r par exemple).

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  14. #34
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 26
    Points : 2
    Points
    2
    Par défaut
    Edit final :
    La conclusion c'est que je pense que tu as raison _Mac_, le problème vient clairement du fait que SERVER['PHP_AUTH_USER'] n'est pas activé.
    Reste à savoir comment l'activer, car j'aimerais réussir à garder le code original vu qu'après le client continue d'envoyer arg1 et arg2 sur d'autres requêtes quand il tente de se connecter au serveur de jeu.
    J'ai cherché une bonne partie de la nuit et de la matinée comment on pouvait l'activer mais je n'ai pas réussi à trouver comment faire, tout comme je n'ai aucune certitude concernant le fait que php tourne en module ou pas chez moi.
    phpinfo me donne ça :
    Server API Apache 2.0 Handler
    Les seules mentions à CGI qu'il y ait dans le phpinfo sont
    GATEWAY_INTERFACE CGI/1.1
    _SERVER["GATEWAY_INTERFACE"] CGI/1.1
    ainsi que le fait que le mod_cgi est actif. Donc je crois comprendre que php est utilisé comme module, mais je ne suis pas sûr.

    Mon post de cette nuit :
    Concernant le dump de $_POST il ne me retourne rien, ce qui me semble un peu inquiétant non ?
    Ce qui explique (j'imagine) que ça ne fonctionne pas en utilisant $_POST["arg1"] à la place de $_SERVER['PHP_AUTH_USER'] (et $_POST["arg2"] à la place de $_SERVER['PHP_AUTH_PW'])

    Le print_r ($_SERVER); montre clairement que je n'ai pas de variable PHP_AUTH_USER de dispo.

    Par contre si je mets directement mes identifiants dans le fichier en mettant $login=nomutilisateur et pareil pour le mot de passe, le client arrive à se connecter, ce qui est déjà une bonne nouvelle ^^ (on se console comme on peut !). Le problème c'est qu'ensuite j' ai un problème de connexion au serveur de jeu, je pense que c'est du au fait que j'ai truandé mon identification et que les variables dont il a besoin n'existent pas.


    Une autre piste, tu dis que ce problème n'est pas dépendant d'une version d'Apache, est-ce que ça pourrait être du à une version de php ? L'ancien site utilisait php4 tandis que je le fais tourner sur php5.


    En espérant que j'arrive un jour à me débrouiller pour que ça finisse par fonctionner, je ne compte plus les dizaines d'heures passés sur l'engin...

  15. #35
    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
    Super pas logique que $_POST soit vide.

    Peux-tu faire une capture complète côté client avec Wireshark de la séquence de login avec la réponse du serveur contenant un dump de $_POST et de $_SERVER ? Envoie-moi le lien par MP, j'examinerai la trace pour voir si la requête faite par le client est une requête POST conforme : si elle est non conforme, ça expliquerait que $_POST est vide.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  16. #36
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 26
    Points : 2
    Points
    2
    Par défaut
    Cool, merci beaucoup pour ta persévérance

    Alors voici ce que m'a sniffé wireshark côté client (192.168.0.8) :

    Je l'ai nettoyé pour qu'il soit plus visible, mais je t'envoie quand même la totale par mp si tu penses que ça peux t'aider.

    Encore merci à toi.

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    No.     Time        Source                Destination           Protocol Info
          4 0.016491    192.168.0.8           192.168.0.7           HTTP     POST /members/login.php HTTP/1.1  (application/x-www-form-urlencoded)
     
    Transmission Control Protocol, Src Port: isoipsigport-1 (1106), Dst Port: http (80), Seq: 1, Ack: 1, Len: 249
    Hypertext Transfer Protocol
    Line-based text data: application/x-www-form-urlencoded
        &language=french
     
    No.     Time        Source                Destination           Protocol Info
          7 0.095500    192.168.0.7           192.168.0.8           HTTP     HTTP/1.1 200 OK  (text/html)
     
    Internet Protocol, Src: 192.168.0.7 (192.168.0.7), Dst: 192.168.0.8 (192.168.0.8)
    Transmission Control Protocol, Src Port: http (80), Dst Port: isoipsigport-1 (1106), Seq: 1461, Ack: 250, Len: 59
    [Reassembled TCP Segments (1519 bytes): #6(1460), #7(59)]
    Hypertext Transfer Protocol
    Line-based text data: text/html
        <?xml version="1.0" encoding="utf-8"?>\n
        <auth_failed/>\n
        Array\n    //////////ça c'est le $_POST////////////////
        (\n
    //////////puis le $_SERVER
            [CONTENT_TYPE] => application/x-www-form-urlencoded\n
            [HTTP_USER_AGENT] => applicationcenter\n
            [HTTP_HOST] => center.application.net\n
            [CONTENT_LENGTH] => 16\n
            [HTTP_CACHE_CONTROL] => no-cache\n
            [HTTP_COOKIE] => PHPSESSID=2992tngr83t1919velh4ep5d26\n
            [PATH] => /sbin:/usr/sbin:/bin:/usr/bin\n
            [SERVER_SIGNATURE] => <address>Apache/2.2.11 (Fedora) Server at center.application.net Port 80</address>\n
        \n
            [SERVER_SOFTWARE] => Apache/2.2.11 (Fedora)\n
            [SERVER_NAME] => center.application.net\n
            [SERVER_ADDR] => 192.168.0.7\n
            [SERVER_PORT] => 80\n
            [REMOTE_ADDR] => 192.168.0.8\n
            [DOCUMENT_ROOT] => /app1/application.net/center/html/site\n
            [SERVER_ADMIN] => root@localhost\n
            [SCRIPT_FILENAME] => /app1/application.net/center/html/site/members/login.php\n
            [REMOTE_PORT] => 1106\n
            [GATEWAY_INTERFACE] => CGI/1.1\n
            [SERVER_PROTOCOL] => HTTP/1.1\n
            [REQUEST_METHOD] => POST\n
            [QUERY_STRING] => \n
            [REQUEST_URI] => /members/login.php\n
            [SCRIPT_NAME] => /members/login.php\n
            [PHP_SELF] => /members/login.php\n
            [REQUEST_TIME] => 1266610857\n
            [argv] => Array\n
                (\n
                )\n
        \n
            [argc] => 0\n
        )\n
        Array\n
        (\n
            [language] => french\n
        )\n
     
     
    No.     Time        Source                Destination           Protocol Info
         14 0.127410    192.168.0.8           192.168.0.7           HTTP     POST /applog.php HTTP/1.1  (application/x-www-form-urlencoded)
     
    Transmission Control Protocol, Src Port: isoipsigport-2 (1107), Dst Port: http (80), Seq: 1641, Ack: 1, Len: 585
    [Reassembled TCP Segments (2225 bytes): #12(180), #13(1460), #14(585)]
    Hypertext Transfer Protocol
    Line-based text data: application/x-www-form-urlencoded
        [truncated] &submodule=HTTPAuthRequest&module=CApplicationCenterDlg&logname=xml%5Fparse%5Ffailed&app=center&comment=%27%3C%3Fxml+version%3D%221%2E0%22+encoding%3D%22utf%2D8%22%3F%3E%0A%3Cauth%5Ffailed%2F%3E%0AArray%0A%28%0A++++%5BCONTENT%5FTYPE%5D+%3D%3E+a pplication%2Fx%2 Dwww%2Dform%2Dur lencoded%0A++++% 5BHTTP%5FUSER%5F AGENT%5D+%3D%3E+ applicationcenter% 0A++++%5BHTTP%5F HOST%5D+%3D%3E+c enter%2Eastronoi d%2Enet%0A++++%5 BCONTENT%5FLENGT H%5D+%3D%3E+16%0 A++++%5BHTTP%5FC ACHE%5FCONTROL%5 D+%3D%3E+no%2Dca che%0A++++%5BHTT P%5FCOOKIE%5D+%3 D%3E+PHPSESSID%3 D2992tngr83t1919 velh4ep5d26%0A++ ++%5BPATH%5D+%3D %3E+%2Fsbin%3A%2 Fusr%2Fs
    bin%3A%2 Fbin%3A%2Fusr%2F bin%0A++++%5BSER VER%5FSIGNATURE% 5D+%3D%3E+%3Cadd ress%3EApache%2F 2%2E2%2E11+%28Fe dora%29+Server+a t+center
    %2Eapplication%2Enet+Port+ 80%3C%2Faddress% 3E%0A%0A++++%5BS ERVER%5FSOFTWARE %5D+%3D%3E+Apach e%2F2%2E2%2E11+% 28Fedora%29%0A++ ++%5BSERVER%5FNA ME%5D+%3D%3E+cen ter%2Eapplication% 2Enet%0A++++%5BS ERVER%5FADDR%5D+ %3D%3E+192%2E168 %2E0%2E7%0A++++% 5BSERVER%5FPORT% 5D+%3D%3E+80%0A+ +++%5BREMOTE%5FA DDR%5D+%3D%3E+19 2%2E1682E0%2E8% 0A++++%5BDOCUMEN T%5FROOT%5D+%3D% 3E+%2Fapp1%2Fast ronoid%2Enet%2Fc enter%2Fhtml%2Fs ite%0A++++%5BSER VER%5FADMIN%5D+% 3D%3E+root%40loc alhost%0A++++%5B SCRIPT%5FFILENAM E%5D+%3D%3E+%2Fa pp1%2Fapplication% 2Enet%2Fcenter%2 Fhtml%2Fsite%2Fm embers%2Flogin%2 Ephp%0A++++%5BRE MOTE%5FPORT%5D+% 3D%3E+1106%0A+++ +%5BGATEWAY%5FIN TERFACE%5D+%3D%3 E+CGI%2F1%2E1%0A ++++%5BSERVER%5F PROTOCOL%5D+%3D% 3E+HTTP%2F1%2E1% 0A++++%5BREQUEST %5FMETHOD%5D+%3D %3.E+ POST%0A++++%5BQU ERY%5FSTRING%5D+ %3D%3E+%0A++++%5 BREQUEST%5FURI%5 D+%3D%3E+%2Fmemb ers%2Flogin%2Eph p%0A++++%5BSCRIP T%5FNAME%5D+%3D% 3E+%2Fmembers%2F login%2Ephp%0A++ ++%5BPHP%5FSELF% 5D+%3D%3E+%2Fmem bers%2Flogin%2Ep hp%0A++++%5BREQU EST%5FTIME%5D+%3 D%3E+1266610857% 0A++++%5Bargv%5D +%3D%3E+Array%0A +++++++%28%0A++ ++++++%29%0A%0A+ +++%5Bargc%5D+%3 D%3E+0%0A%29%0AA rray%0A%28%0A+++ +%5Blanguage%5D+ %3D%3E+french%0A %29%0A%27%0AErro r%3A+Error+0xC00 CE556+on+line+2% 2C+position+15%0 D%0AReason%3A+Non+valide+au+nive au+sup%E9rieur+d u+document%2E%0D %0A&arg1=nomuser& arg2=NULL&arg3=N ULL&version=v2%2 E0%2E11
    Je t'ai envoyé les mps, mais je ne suis pas sûr qu'ils soient bien partis, si ce n'est pas le cas, dis-le moi pour que je t'envoie le fichier.

  17. #37
    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
    Citation Envoyé par Titooun Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Line-based text data: application/x-www-form-urlencoded
        &language=french
    Le client ne transmet que le paramètre de langue (language) et pas du tout arg1, arg2 et arg3. Il faut voir pourquoi. C'est ça le problème.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  18. #38
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 26
    Points : 2
    Points
    2
    Par défaut
    Mince, je n'avais pas vu que tu avais répondu puisqu'on a discuté un peu par mp.

    Partant de ta conclusion, j'aurai une petite question :

    Si je ne sniffe rien d'autre de sortant sur l'ordi du client, peut-on être 100% catégorique pour dire que le client n'envoie pas une requête correcte et donc que le client que j'ai récupéré ne fonctionne pas ? Ce qui voudrait dire que les fichiers que j'ai récupéré ont été modifiés pour ne pas fonctionner en l'état. Ça me surprend un peu car j'ai aussi essayé avec d'autres versions antérieures du client et le résultat est le même.

    N'y-t-il vraiment aucune possibilité pour que l'authentification se fasse autrement sans qu'on le voit sur ma trace wireshark ?

  19. #39
    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
    Globalement, oui, on peut être catégorique, mais peut-être qu'il y a une subtilité du client que tu ignores. Le fait que le problème que tu as vient de là, c'est certain à 100%. Après, quant à dire s'il s'agit d'un bug ou d'un comportement normal du client, je ne peux pas dire : il faut avoir le source du client pour comprendre pourquoi le login et le mot de passe ne sont pas envoyés, et en étudiant le code, si ça marchait avant, on devrait pouvoir identifier comment faire une vraie bonne authentification. C'est pour ça que je te demandais le code du client.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  20. #40
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 26
    Points : 2
    Points
    2
    Par défaut
    Et ben dis donc, ça c'est de la réponse rapide !
    Merci beaucoup, je m'attaque tout de suite à décortiquer ça pour te l'envoyer.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Réponses: 13
    Dernier message: 26/07/2010, 08h59
  2. Problème avec Blast sur serveur Apache local
    Par jobim08 dans le forum Apache
    Réponses: 6
    Dernier message: 20/02/2009, 10h19
  3. Config de dossier partage sur serveur Apache
    Par totonono dans le forum Apache
    Réponses: 8
    Dernier message: 25/07/2006, 13h00
  4. scripts cgi sur serveur apache
    Par jejerome dans le forum Apache
    Réponses: 1
    Dernier message: 26/02/2006, 18h10
  5. Sécurité sur serveur apache
    Par Beaunico dans le forum Apache
    Réponses: 8
    Dernier message: 13/04/2004, 07h03

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