Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Services Web
Services Web Forum d'entraide pour les services Web en PHP, qui permettent de créer et de consommer facilement des webservices (génération de WSDL etc.). Exemples : SOAP, NuSOAP, REST, SCA-SDO... Avant de poster -> Cours webservices
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/05/2008, 13h49   #1
Invité de passage
 
Inscription : octobre 2004
Messages : 9
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 9
Points : 4
Points : 4
Par défaut [SOAP] ServiceWeb et sécurité PHP5

Bonjour,

Je viens de réaliser un service web en php5 avec un fichier wsdl .... jusque la tout fonctionne bien.

Maintenant je souhaiterais sécuriser un peu l'accès à ce service mais la je sèche .
Je souhaiterais le faire soit via un login/mot de passe soit via une certificat avec clé privé. Ou bien sur soit avec une autre méthode si vous avez une meilleure idée.

Je ne trouve aucune doc sur ce sujet est-ce possible de le faire en PHP5 ?

Merci de votre aide.
Jeobs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2008, 15h07   #2
Membre éclairé
 
Homme
Développeur Web
Inscription : avril 2004
Messages : 319
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2004
Messages : 319
Points : 325
Points : 325
Bonjour.

Je n'ai jamais eu besoin de sécuriser du WebService, donc je ne peux pas trop t'aider. Mais je sais qu'il est possible d'effectuer une authentification par le header d'une requête SOAP.
Cette page peut surement t'aider, surtout avec les exemples des autres utilisateurs :
http://fr.php.net/manual/fr/function...-construct.php

Sinon tu peux simplement faire une méthode avec login / mdp en paramètres. Et le serveur te laisse accéder aux autres méthodes pendant x temps. Mais bon c'est assez bancal comme méthode.

Bon courage
Guybrush113 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2008, 16h53   #3
Invité de passage
 
Inscription : octobre 2004
Messages : 9
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 9
Points : 4
Points : 4
Salut,

Merci pour ton conseil c'est en effet par la qu'il fallait s'orienter.

J'ai résolu mon problème et je partage ma réponse on sait jamais ça peut aider :

En fait il faut créer une fonction d'authentification avec login mp du cotès service web qui mettra un attribut de la classe du service à vrai :

exemple simple :

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
 
class monWebService {
 
 
    private $auth = FALSE ;
 
	//////////////////::FONCTION POUR AUTHENTIFICATION    /////////////:
    	public function authUser($login,$password)
	{
		if($password == 'test' && $login == 'toto' )
		{
			$this->auth = true;
		 }
		else
		{
			$this->auth = false;
		}
	}
///ENSUITE IL FAUT VÉRIFIER DANS CHAQUE FONCTION PUBLIÉE QUE L'AUTH EST OK AU CAS OU UNE PERSONNE VOUDRAIT PASSER SANS ENVOYER LES HEADERS :
 
public function getWsInfo() 
   {
	if(!$this->auth)
	{
 
         	exit();
		//OU renvoie une erreur :) c'est plus propre mais c'est un exemple
 
	}
 
    	 $information = "Servce web de demonstration";
    	 $version = "1.0";
 
         return array('date' => date('Y-m-d\TH:i:s O'),'information'=>$information  ,'version'=>$version);
 
   }
}

Ensuite cotés client on peut l'appeler à l'aide de la fonction SoapHeader de php :

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
 
//Il faut lui passer les paramètres sous la forme d'un objet donc obligé de créer une classe pour le login mp :
 
class SoapHeaderAuthUser
{	
    public $login;
    public $password;
 
    public function __construct($l, $p)
    {
        $this->login = $l;
	$this->password = $p;        
    }
}
 
$espaceDeNom = 'http://espacedenomvalide';
$loginpassword = new SoapHeaderAuthUser("toto", "test");
 
//Ci dessous 'authUser' est la fonction qui fait  l'authentification
$soapHeaders[] = new SoapHeader($espaceDeNom, 'authUser', $loginpassword);
 
 
$fonction="getWsInfo";
//Parametre
$param = array('value'=>0);
 
// Nouvelle instance de la classe soapClient
$client = new SoapClient('http://chemin/vers/fichier/.wsdl', array('trace'=> 1, 'soap_version'=> SOAP_1_1));
 
echo "Appel de la fonction $fonction......<br/><br/>";
 
//Affichage du message :
$affichage .=  utf8_decode($wsReponse->information);
 
//ENVOI DES HEADERS POUR L'AUTHENTIFICATION :
$client->__setSoapHeaders( $soapHeaders );
 
//APPEL DU SERVICE WEB ET DE LA FONCTION DEMANDEE
 
$wsReponse =  $client->__call($fonction,$param);	
 
$affichage .="	 <div id='contenu'><br/><br/>";
 
$affichage .= "date : ". $wsReponse->date;
$affichage .= "<br /> info : ". $wsReponse->information;
$affichage .= "<br /> version : ".$wsReponse->version;
 
$affichage .= "</div>";
 
echo $affichage;
Voila en espérant que cela pourra aider quelqu'un

Bonne journée
Jeobs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2008, 17h57   #4
Membre éclairé
 
Homme
Développeur Web
Inscription : avril 2004
Messages : 319
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2004
Messages : 319
Points : 325
Points : 325
Merci à toi, ca aidera surement du monde (et surement moi!)
Guybrush113 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h16.


 
 
 
 
Partenaires

Hébergement Web