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

Bibliothèques et frameworks PHP Discussion :

[Web Service] Authentification HTTP


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 11
    Points : 2
    Points
    2
    Par défaut [Web Service] Authentification HTTP
    Bonsoir à tous!!

    J'ai un soucis au tour de l'authentification HTTP. je dois utiliser un webservice distant.

    ce dernier dispose d'une authentification apache "HTTP Authentication"

    Je dois réaliser un script en PHP afin d'envoyer des requêtes à ce webservice et récupérer des résultats automatiquement sans que j'interviens pour taper le nom d'utilisateur et le mot de passe.

    sachant que je connais ces infos et donc je dois les injecter dans mon script mais je ne sais pas comment le faire.

    mon script est le suivant:
    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
    $client= "http://mon_serveur/webservices?wsdl";
    $client = new SoapClient($client,true);
     
    $err = $client->getError();
    if ($err) { 
     
    echo 'erreur du constructeur: ' . $err ;
     
     }
     
     
    $result = $client->call('ma_methode', array('name' => 'test')); 
     
    var_dump($result);
     
    if ($client->fault) { 
     
    echo 'Fault: '.$fault;
    var_dump($result); 
     } else { 
     
    $err = $client->getError();
     
    if ($err) {
     
    echo 'Erreur 2: ' . $err ;
     } else { 
     
     var_dump($result);
     }
     }
    j'obtiens toujours
    HTTP Error: HTTP authentication failed
    même en essayant $client= "login:password@http://mon_serveur/webservices?wsdl";

    j'ai le même message d'erreur.

    Merci de m'orienter

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Par le paramètre options du constructeur de l'objet SoapClient :
    Pour les identifications HTTP, vous devez utiliser les options login et password.
    Extrait de sa documentation.

  3. #3
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 11
    Points : 2
    Points
    2
    Par défaut Problème authentification HTTP
    Merci pour ta réponse,

    J'ai vu la doc et j'ai essayé
    $client = new SoapClient("some.wsdl", array('login' => "some_name",
    'password' => "some_password"));

    j'ai tjr l'erreur "HTTP Error: HTTP Authentication failed "

  4. #4
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Salut et bienvenue dans les forums de Developpez .com !

    tu peux intégrer le pseudo et le mot de passe dans l'url :
    De retour parmis vous après 10 ans!!

  5. #5
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 11
    Points : 2
    Points
    2
    Par défaut Problème athentification HTTP
    Merci Sub0,

    J'ai deja essayé ça tu peux voir dans mon premier post:

    $client= "login:password@http://mon_serveur/webservices?wsdl";


  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2008
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Il existe une librairie php qui s'appelle CURL et qui sert à remplir des formulaires automatiquement. Je l'ai pas mal utilisé et donc je te conseille d'essayer de travailler avec.

    Des tutos et infos:

    Le manuel:
    http://fr.php.net/curl
    Un exemple tuto:
    http://www.seoblackout.com/2008/02/1...ue-formulaire/
    Un exemple pour un login a google adsence:
    http://www.askapache.com/webmaster/l...using-php.html

    Pour le reste j'ai pas les liens, mais en cherchant sur google j'avais trouvé quelques exemples intéressants.

    Je me tiens à ta disposition au cas ou.

  7. #7
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Merci firehawk.2 pour ta réponse,

    Mon problème n'est pas l'envoi des données mais l'authentification sur un serveur distant !!!

    à ce moment là il n'y a aucun formulaire à remplir, juste la fenêtre d'authentification de Windows Apache.

    Ces informations sont récuparables dans les variables:

    $_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'] mais moi je veux que mes utilisateurs accèdent au serveur distant sans s'authentifier du moment que je dois injecter qlq part dans mon code cette étape d'authentification .

    J'espère que mon explication est claire.

    Merci

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2008
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Au temps pour moi, je n'avais pas compris exactement le problème..
    Le but est donc de remplir une fenêtre d'authentification apache, ou mieux, faire en sorte que la fenêtre n'apparaisse pas?

    Je ne m'y connais pas beaucoup au niveau de l'accès serveur. Je vois ou doivent être enregistrées les variables, mais je ne sais pas quelles méthodes utilise le serveur pour vérifier si l'utilisateur est déjà authentifié. (cookies, autres...)

    Pourrais tu me faire un rappel complet de ta situation et de tes attentes, car je m'embrouille un peu dans toutes tes explication.S'il te plais.

    Merci.

  9. #9
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Merci encore firehawk.2

    J'ai un serveur distant qui utilise java AXIS.

    Je dois realiser un client du webservice AXIS afin de consulter les données sur ce dernier.

    Le serveur AXIS est securisé par une authentification apache !!!

    donc les utilisateurs utilisant le client webservice en PHP qui est le mien !!! auront une fenêtre de LOGIN+PASSWORD chose qui n'est pas pratique.

    je veux faire un code du client webservice de tel sorte que l'utilisateur fait appel à ce client et interroge le serveur sans qu'ils aient la fenêtre de LOGIN+PASSWORD

    ouffff

    J'espère que c clair mnt !!!

    Merci pour votre aide

  10. #10
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Questions :
    - Cela fonctionne bien si tu t'authentifies manuellement ?
    - Tes identifiants possèdent-ils des caractères spéciaux (autres que A..Z & 0..9) ?
    De retour parmis vous après 10 ans!!

  11. #11
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Sub0 Voir le message
    Questions :
    - Cela fonctionne bien si tu t'authentifies manuellement ?

    OUI, ça marche en s'authentifiant manuellement !!

    - Tes identifiants possèdent-ils des caractères spéciaux (autres que A..Z & 0..9) ?
    NON, j'ai utiliser username= "test" password="test"
    sans majuscule !

  12. #12
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Ok, j'ai peut-être une piste...
    Il est apparemment possible de définir les identifiants directement dans le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $client = new SoapClient("some.wsdl", array('login'          => "some_name",
                                                'password'       => "some_password"));
    De retour parmis vous après 10 ans!!

  13. #13
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    merci pou ta réponse,

    tu peux voir sans mon post un peu plus haut !

    j'ai deja utilisé ça et ça marche pas

  14. #14
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Citation Envoyé par zebra1928 Voir le message
    Merci pour ta réponse,

    J'ai vu la doc et j'ai essayé
    $client = new SoapClient("some.wsdl", array('login' => "some_name",
    'password' => "some_password"));

    j'ai tjr l'erreur "HTTP Error: HTTP Authentication failed "
    Montre nous comment tu as adapté et ajouté ce code.
    De retour parmis vous après 10 ans!!

  15. #15
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Installation de NUSOAP,cURL, ensuite j'ai essayé plusieurs scripts comme:

    1/

    $client = new Soapclient(array( "to" => "http://mon_serveur/mon_webservices?wsdl","httpAuthUsername" => "mon_login","httpAuthPassword" => "mon_motdepasse","httpAuthType" => "Basic"));

    Erreur: no transport found, or selected transport is not yet supported!

    2/

    $client = new SoapClient("http://mon_serveur/mon_webservices?wsdl");
    $client->setCredentials($username , $password);

    Fatal error: Call to a member function setCredentials() on a non-object

    3/

    $client = new SoapClient("http://mon_serveur/mon_webservices?wsdl",array('login' => "mon_login", 'password' => "mon_password"));

    Erreur: "HTTP Error: HTTP Authentication failed "

    4/

    j'ai essayé aussi:

    $client= "mon_login:mon_password@http://mon_serveur/webservices?wsdl";

    Erreur: "HTTP Error: HTTP Authentication failed "





    Merci de m'aider

  16. #16
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $client = new SoapClient("http://mon_serveur/mon_webservices?wsdl",
    array('login' => "test", 'password' => "test"));
    De retour parmis vous après 10 ans!!

  17. #17
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    cette fois j'ai eu le message d'erreur:
    wsdl error: HTTP ERROR: socket read of headers timed out
    Merci Sub0 pour ton aide !

  18. #18
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Ton service n'est pas accessible on dirait bien.
    Je te conseille vivement de reprendre le tutoriel pas à pas et de refaire ton code correctement du début.
    De retour parmis vous après 10 ans!!

  19. #19
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    salut Sub0,

    Merci pour tes réponses.

    Mon webservice est bel et bien accessible car si je tape l'adresse: "http://mon_serveur/mon_webseervice/webservice?wsdl", j'obtiens la fenêtre d'authentification et après saisie du login + Password j'accède au ficheer XML du webservice !!!!!!!!!!


    En plus le tuto ne m'apporte rien de nouveau

  20. #20
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    145
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 145
    Points : 77
    Points
    77
    Par défaut
    Apres beaucoup de recherche, de test, voici comment sécuriser un web service

    si vous avez des retours, je suis preneur.

    Coté client

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     $client = new SoapClient('http://www.monsite.com/mon.wsdl', 
        	array(	'trace'=> 1, 
        		'soap_version'  => SOAP_1_1,
      		"exceptions" => 0,
        		'encoding'=> 'ISO-8859-1',
        		'login'	=> "user",
    		'password'=> "pass"
     
        ));

    coté serveur
    on peut comparer les mots de passe avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $PHP_AUTH_USER et $PHP_AUTH_PW

Discussions similaires

  1. Spring security + Web service: Authentification
    Par Toinou87 dans le forum Services Web
    Réponses: 1
    Dernier message: 11/07/2009, 15h32
  2. Problème d'accès à un web Service en HTTPS.
    Par eric39 dans le forum Services Web
    Réponses: 2
    Dernier message: 17/12/2008, 09h55
  3. WEB SERVICES & authentification
    Par mickael.guilbert dans le forum Glassfish et Payara
    Réponses: 7
    Dernier message: 07/07/2008, 15h58
  4. Pocket Pc Web Service Et Https
    Par lizati dans le forum Services Web
    Réponses: 2
    Dernier message: 29/06/2007, 09h20
  5. [Web Service] Authentification
    Par Stef_D dans le forum Delphi
    Réponses: 9
    Dernier message: 15/02/2007, 17h05

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