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

EDI, CMS, Outils, Scripts et API PHP Discussion :

connexion d'un utilisateur sur un serveur et redirection


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut connexion d'un utilisateur sur un serveur et redirection
    bonjour,

    voilà mon problème : je dois réaliser un module de bypass adobe connect pour accéder directement à une salle virtuelle spécifique qui dépend des informations fournies par l'utilisateur.

    j'ai développé mon application en php qui comprend :
    -une interface de connexion utilisateur qui récupère: login+mot de passe
    -un fichier PHP qui récupère les données utilisateur du formulaire de l'interface de connexion.
    -une classe php qui permet de communiquer avec l'api

    Dans ma classe, je fais appel aux fonctions PHP "cURL" pour communiquer avec le serveur, récupérer un cookie et un numéro de session.
    j'assemble ensuite une chaine de charactères qui contient le mot de passe, le login de l'utilisateur, le cookie, l'id de session.
    J'envoie cette chaîne de caractère avec "cURL" et j’obtiens une réponse XMl du serveur qui contient un status code "ok" pour login réussi ou "no-data"

    Le problème c'est que cURL ne semble qu'effectuer et recevoir des requêtes et non pas directement logger l'utilisateur sur le serveur en cas d'identification réussie.
    Si je copie & colle cette chaine directement dans la barre d'adresse d'un navigateur, j'arrive effectivement à entrer dans la salle en question et à m'identifier.
    Je ne peux évidemment pas utiliser cette méthode ni head("location:".$url)car ceci ferait passer le mot de passe et le login en clair.

    Je cherche donc une façon de logger l'utilisateur en toute confidentialité.

    merci

  2. #2
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    c'est pas clair ce que tu veux faire. Que fait tu du jeton d'authentification créé par php ?
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    A priori il n'y a pas de système de tokens. il suffit d'envoyer ce type d' URL après récupération des informations de sessions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    https://example.com/api/xml?action=login&login=joy@acme.com&password=exemple&account-id=295153&session=Sbreezzd2dfr2ua5gscogv
    ma chaîne de connexion est fonctionnelle mais je cherche à envoyer ces informations sans qu'elles passent en clair.

    La démarche est explicitée ici : http://help.adobe.com/en_US/connect/...ddf77-7fe4_SP1
    "Log in to a Adobe Connect hosted account"

    L'idée de créer une interface de connexion alternative a adobe connect permet de faire accéder l'utilisateur à sa salle virtuelle sans passer par des pages intermédiaires. faire un raccourci en gros avec une ergonomie personnalisée.

  4. #4
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    Citation Envoyé par en.wikipedia.org
    Because HTTPS piggybacks HTTP entirely on top of TLS, the entirety of the underlying HTTP protocol can be encrypted. This includes the request URL (which particular web page was requested), query parameters, headers, and cookies (which often contain identity information about the user). However, because host (web site) addresses and port numbers are necessarily part of the underlying TCP/IP protocols, HTTPS cannot protect their disclosure. In practice this means that even on a correctly configured web server eavesdroppers can still infer the IP address and port number of the web server (sometimes even the domain name e.g. www.example.org, but not the rest of the URL) that one is communicating with as well as the amount (data transferred) and duration (length of session) of the communication, though not the content of the communication.[citation needed]
    le gras est mon fait.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut https
    le problème c'est que j’envoie cette requête sans certification serveur.
    chrome par exemple refuse de considérer l'en tête https (c'est barré).
    J'imagine que le problème vient de mon type d'hébergement et qu'il faut que je mette en place un certificat?

    Une autre option ne serait elle pas d'utiliser des paramètres dans l'URL?
    Si oui, est ce une méthode qui procure un niveau de sécurité suffisant et comment le mettre en place?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://example.com/api/xml?action=login&login=$param2&password=$param1&account-id=1258899&session=Sbreezzd2dfr2ua5gscogv

  6. #6
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    le fait que le https soit barré sur tes pages signifie que ton hébergement ne possede pas un certificat valide aux yeux de chrome. Ce qu'il se passe entre ton script et abode.com dépend uniquement des certificats possédés par adode.com ET des tiers de confiances (authorité de certifications) installé chez ton hébergeur. cURL devrait te dire si la partie ssl ne lui plais pas assez (je pense à un truc comme ça: http://unitstep.net/blog/2009/05/05/...otected-sites/ ).


    hors sujet: tu te rends maintenant compte qu'avec cURL est assez d'astuce tu peux faire un proxy déchiffrant "SSL" assez facilement, sur l'exemple de l'affaire qui était sortie quand apple a commencer à faire de la géolocalisation avec les id de wifi
    http://fxaguessy.fr/wp-content/uploa...smatphones.pdf .
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  7. #7
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    Citation Envoyé par drakk Voir le message
    le problème c'est que j’envoie cette requête sans certification serveur.
    chrome par exemple refuse de considérer l'en tête https (c'est barré).
    chrome (le client) n'intervient pas entre cURL (sur ton serveur) et abode.com ...
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  8. #8
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    En utilisant Curl, je n'ai pas de message d'erreur en appelant l'URL en HTTPS.
    Je reçois même un code "ok" mais lorsque je redirige l'utilisateur vers une page du serveur adobe, on me demande quand même de me ré identifier.

    Je te fais suivre le code au cas où :

    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
    84
    85
    86
    <?php
    class ConnectProAdmin {
        public $curl_handle;
        public $baseURL;
        public $cookie;
        public $account;
        private $urlfinale;
     
    	//constructeur de la classe
        function __construct($email,$password,$adobeBaseURL) {
            $curl_handle = null;
            $this->baseURL = $adobeBaseURL;
     
    		//creation de session
            $this->curl_handle = curl_init();
     
    		//si aucun cookie n'est en memoire
            if( !isset($this->cookie) ) {
                $this->setupAdobeSessionCookie();
     
                            /* Login to the API service */
                            $buffer = null;
                            $loginURL = null;
     
                            $loginURL = "https://".$this->baseURL ."/api/xml?action=login&login=" . $email .
                                                    "&password=" . $password . "&account-id=".$this->account. "&session=" . $this->cookie;
     
                           	curl_setopt($this->curl_handle, CURLOPT_URL, $loginURL);	
    						curl_setopt($this->curl_handle, CURLOPT_CONNECTTIMEOUT ,5);						
    						curl_setopt($this->curl_handle, CURLOPT_RETURNTRANSFER, 1);
    						$buffer = curl_exec($this->curl_handle);
     
    						curl_close($this->curl_handle);
     
    						if ($buffer === false) {
    							  exit('Error2, ' . curl_error($ch) . "\n");
    						}
     
    						$login=simplexml_load_string($buffer);
    						if($login->status[-code-]=="ok"){
    						echo "<br/>utilisateur identifie";
    							//header("location:http://redirection adobe.com");
    						}
    						else{
    							echo "<br/>utilisateur inconnu";
    						}
            }
        }
     
            public function getSessionCookie() {
     
                return ($_COOKIE['BREEZESESSION'] == "") ? $this->cookie : $_COOKIE['BREEZESESSION'];
            }
     
        private function setupAdobeSessionCookie() {
            $returnBuffer = null;
    		try{
            curl_setopt($this->curl_handle, CURLOPT_URL, "http://".$this->baseURL . "/api/xml?action=common-info");
            curl_setopt($this->curl_handle, CURLOPT_CONNECTTIMEOUT , 4);
            curl_setopt($this->curl_handle, CURLOPT_RETURNTRANSFER , 1);
     
            $returnBuffer = curl_exec($this->curl_handle);       
    		}
    		catch(Exception $e)
    		{
    			echo "erreur :".$e;
    		}
            // Grab the Cookie out of the server XML response
            $xmlObj = simplexml_load_string($returnBuffer);
            $this->cookie = $xmlObj->common->cookie;
     
    		//creation objet Dom
    		$dom = new DomDocument();
    		$dom->loadXML($returnBuffer);
    		$id=$dom->getElementsbyTagName("account");
    		foreach($id as $i){
    			if($i->hasAttribute("account-id"))
    			{
    				//recuperation de l'ID du compte
    				$this->account=$i->getAttribute("account-id");
    			}
    		}
        }
     
    }
    ?>

Discussions similaires

  1. Coupure de connexion vers un executable sur le serveur
    Par anismouali dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 29/03/2010, 19h26
  2. Réponses: 4
    Dernier message: 05/02/2009, 14h16
  3. [MySQL] Connexion à une base MySQL sur un serveur hébergé
    Par mte2005 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/01/2008, 09h18
  4. Réponses: 4
    Dernier message: 01/08/2007, 15h45
  5. [Debutant]droits des utilisateurs sur sql serveur
    Par christophebmx dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/01/2005, 16h50

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