Précédent   Forum du club des développeurs et IT Pro > PHP > Scripts
Scripts Forum d'entraide sur les scripts PHP téléchargés. Les meilleurs scripts PHP, la FAQ scripts PHP, toutes les FAQ PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 18/10/2012, 15h42   #1
drakk
Invité de passage
 
Homme
Inscription : octobre 2012
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2012
Messages : 7
Points : 1
Points : 1
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
drakk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2012, 16h16   #2
gene69
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 1 626
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 626
Points : 1 992
Points : 1 992
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.
Soyez moderne: mysqli_connect() or throw Exception(mysqli_connect_error());

PHP: un problème ? décrivez le avec ceci.

Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2012, 16h35   #3
drakk
Invité de passage
 
Homme
Inscription : octobre 2012
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2012
Messages : 7
Points : 1
Points : 1
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 :
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.
drakk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2012, 10h49   #4
gene69
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 1 626
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 626
Points : 1 992
Points : 1 992
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.
Soyez moderne: mysqli_connect() or throw Exception(mysqli_connect_error());

PHP: un problème ? décrivez le avec ceci.

Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/10/2012, 12h10   #5
drakk
Invité de passage
 
Homme
Inscription : octobre 2012
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2012
Messages : 7
Points : 1
Points : 1
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 :
http://example.com/api/xml?action=login&login=$param2&password=$param1&account-id=1258899&session=Sbreezzd2dfr2ua5gscogv
drakk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2012, 13h23   #6
gene69
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 1 626
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 626
Points : 1 992
Points : 1 992
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.
Soyez moderne: mysqli_connect() or throw Exception(mysqli_connect_error());

PHP: un problème ? décrivez le avec ceci.

Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2012, 13h25   #7
gene69
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 1 626
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 626
Points : 1 992
Points : 1 992
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.
Soyez moderne: mysqli_connect() or throw Exception(mysqli_connect_error());

PHP: un problème ? décrivez le avec ceci.

Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2012, 14h56   #8
drakk
Invité de passage
 
Homme
Inscription : octobre 2012
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2012
Messages : 7
Points : 1
Points : 1
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 :
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");
			}
		}
    }
 
}
?>
drakk est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 18h26.


 
 
 
 
Partenaires

Hébergement Web