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 :

authentification API cURL avec cookie


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2019
    Messages : 61
    Points : 53
    Points
    53
    Par défaut authentification API cURL avec cookie
    Bonjour,
    Je suis toute nouvelle là dessus et je galère un peu même si cela doit certainement être basique....
    J'ai accès à une API, pour s'authentifier j'utilise un username et un password et c'est censé renvoyer un cookie qui permet l'authentifiaction et ainsi l'accès à l'API (ce n'est pas moi qui ai fait l'API)
    Voici comment j'ai essayé de coder pour l'authentification avec des choses trouvées sur internet:

    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
    public function test(){
     
            $cookie_file_path = "cookie.txt";
            $ch = curl_init('http://monURL/login?username=usernam&password=password');
            curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path);
            curl_setopt($ch, CURLOPT_URL, 'http://monURL/login?username=admin&password=password');
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_USERPWD, "username:password");
           /* curl_setopt_array($ch,
                array(
                    CURLOPT_URL => 'http://monUrl/login?username=username&password=password',
                    CURLOPT_HTTPAUTH => CURLAUTH_ANY,
                    CURLOPT_USERPWD  => "username:password",
                    CURLOPT_RETURNTRANSFER   => true,
                )
            );*/
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json'));
            $output = curl_exec($ch);
            $info = curl_getinfo($ch);
     
            if($output==false){ //la recup de la ressource a pas marché
                echo 'blob';
                var_dump(curl_error($ch));//affiche l'erreur
            }else {
                var_dump(curl_getinfo($ch, CURLINFO_HTTP_CODE));
                $data=json_decode($output, true);
                echo 'blobi';
                var_dump($data);
     
            }
     
     
            curl_close($ch);
     
            }
    Et cela me renvoie blobstring(0) ""
    Donc comme il y a blob cela veut dire que l'ouput est faux.

    Je ne comprends pas trop... Merci beaucoup pour vos réponses

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    c'est bizarre d'envoyer les codes d'accès en même temps dans l'URL et en même temps dans "CURLOPT_USERPWD". un seul endroit devrait suffire au serveur pour lire les données envoyées.
    est ce que la documentation de ce service indiquez de faire cela ?

    ensuite si la données recherchée est un cookie, regardez ce qui est écrit dans le fichier $cookie_file_path.
    ou alors mettez CURLOPT_HEADER à TRUE pour récupérer les entêtes avec "curl_exec".

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2019
    Messages : 61
    Points : 53
    Points
    53
    Par défaut
    En effet un seul endroit doit suffire, j'ai regardé plusieurs moyens pour voir lequel marche et j'ai laissé les deux mais je peux en enlever un.

    Dans le cookie.txt il y a

    # Netscape HTTP Cookie File
    # https://curl.haxx.se/docs/http-cookies.html
    # This file was generated by libcurl! Edit at your own risk.

    #HttpOnly_monURL.com FALSE / FALSE 0 JSESSIONID 6D9B25BF7A48C13126A72F92FA6BBA93

    cela me renvoie JSESSIONID, mais je ne sais pas quoi en faire...
    Merci pour votre réponse !

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 936
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 936
    Points : 4 356
    Points
    4 356
    Par défaut
    Citation Envoyé par blobfish75 Voir le message
    #HttpOnly_monURL.com FALSE / FALSE 0 JSESSIONID 6D9B25BF7A48C13126A72F92FA6BBA93

    cela me renvoie JSESSIONID, mais je ne sais pas quoi en faire...
    Merci pour votre réponse !

    il faudra le renvoyer dans toutes les requêtes suivantes : il permet au serveur de suivre le client et notamment de savoir si vous êtes authentifié ou non...

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2019
    Messages : 61
    Points : 53
    Points
    53
    Par défaut
    C'est ce que j'avais compris aussi, cependant, j'ai fais ça à la suite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $chTest = curl_init('http://varlot.epfprojets-sceaux.com:8080/users');
            curl_setopt($chTest, CURLOPT_COOKIEFILE, $cookie_file_path);
            $outputTest= curl_exec($chTest);
     
     
            $parsee=json_decode($chTest, true);
     
            foreach ($parsee['utilisateur'] as $result){
                echo '<p>'.$result['nom'].'</p>';
            }
            curl_close($chTest);
    et cela me renvoie
    Code JSON : Sélectionner tout - Visualiser dans une fenêtre à part
    {"timestamp":"2019-12-24T20:44:59.779+0000","status":401,"error":"Unauthorized","message":"Unauthorized","path":"/users"}
    ainsi que l'erreur
    Warning: json_decode() expects parameter 1 to be string, resource given
    Je ne comprends pas pourquoi...

    EDIT: j'ai refait le code depuis le début, le voici:
    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
     public function testBis(){
     
            /*INITIALISER CURL*/
            $curl = curl_init();
     
            /*MISE EN PLACE DES PARAMETRES*/
            $cookie_file_path = "cookie.txt";
     
            //Premiere méthode: pas l'array
            $opts = [
                CURLOPT_COOKIEJAR, $cookie_file_path,
                CURLOPT_SSL_VERIFYPEER => false, //verifie l'authenticité du certificat si elle est à true
                CURLOPT_URL            => 'http://monURL/login?username=admin&password=password', //URL de l'hite à utiliser pour la connexion
                CURLOPT_RETURNTRANSFER => true, // Retourne le transfert sous une chaîne au lieu de l’afficher.
                CURLOPT_TIMEOUT        => 30,//Durée maximale d’exécution de la requête, en secondes
                CURLOPT_CONNECTTIMEOUT => 30, //Durée maximale que pourra prendre la tentative de connexion à l’hôte, en secondes.
                CURLOPT_POST=>true
            ];
     
            curl_setopt_array($curl, $opts); //$curl: ressource à parametrer, $opts: tableau associatif avec les options
     
           /*EXECUTION DE LA SESSION*/
           // $response = json_decode(curl_exec($curl), true);
     
          //  print_r($response);
     
            /*FERMER LA RESSOURCE*/
            curl_close($curl);
     
            $ch=curl_init();
     
            $cookie_file_path = "cookie.txt";
     
            $options = [
                CURLOPT_COOKIEFILE, $cookie_file_path,
                CURLOPT_URL            => 'http://monURL/users',
    //users est un GET donc je n'ai pas mis le CURLOPT_POST
            ];
            curl_setopt_array($ch, $options);
            $response = json_decode(curl_exec($ch), true);
     
            curl_close($ch);
     
            return new Response($response);
     
        }
    Et j'obtiens {"timestamp":"2019-12-25T16:50:47.995+0000","status":401,"error":"Unauthorized","message":"Unauthorized","path":"/users"}1
    Je ne comprends pas pourquoi il y a l'erreur et pourquoi il y a un 1 à la fin.
    Merci encore pour vos réponses.

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/04/2011, 09h53
  2. authentification web avec cookie
    Par jack_x4 dans le forum Réseau/Web
    Réponses: 2
    Dernier message: 12/08/2010, 16h45
  3. Authentification avec cookie
    Par usapiste dans le forum Tomcat et TomEE
    Réponses: 0
    Dernier message: 06/04/2009, 14h44
  4. Api mysql avec Devc++, erreur de compilation
    Par Viiince dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 15/06/2004, 17h19
  5. [struts] mémorisation d'une checkbox avec cookie
    Par rocco dans le forum Struts 1
    Réponses: 3
    Dernier message: 22/04/2004, 12h39

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