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

Arduino Discussion :

client authentification


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 106
    Par défaut client authentification
    Bonjour à tous,

    Après plusieurs jours de test, je me décide à venir vous demandez de l'aide.

    La situation est la suivante. J'ai une carte avec ESP32 . Je possède un serveur externe pour une application web.

    L'esp32 se connecte parfaitement au wifi .
    Quand ma page WEB n'est pas protégée, l'ESP32 se connecte parfaitement et fonctionne bien.

    Pour des raisons de sécurité, j'ai donc décider de protéger ma page web avec une authentification basic. Un user et un password , avec l'ajout de fichiers .htaccess et .htpasswd à la racine de ma page.
    Quand je rentre sur ma page avec un navigateur, c'est impeccable, elle me demande bien de rentrer un user et password.

    Le hic c'est que mon ESP32 n'arrive plus à se connecter. Normal il faut que je rajoute l’authentification.

    C'est la ou ça coince.
    Pour le moment le user est "test" et le password est "test" dans mon fichier .htpasswd

    Voici ma fonction qui n'arrive pas à se connecter :

    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
    //-------   Connection au serveur
    // avec cette fonction je me connecte au serveur avec un time-out de 2 secondes
    void connection_serveur(){
      int LOC_compteur = 0 ;
     
      httpClient.begin("http://serveur.monserveur.fr");
      httpClient.setAuthorization("test", "test");
     
      int statusCode = httpClient.GET();
     
        if (statusCode > 0) {
     
          Serial.println("Able to send HTTP request out of the board.");
     
          if(statusCode == HTTP_CODE_OK) {
            Serial.println("Server responded with HTTP status 200.");
            String payload = httpClient.getString();
            Serial.println(payload);
          }
          else {
            Serial.printf("Got HTTP status: %d", statusCode);
            String payload = httpClient.getString();
            Serial.println(payload);
          }
        }
        else {
          Serial.printf("Error occurred while sending HTTP Get: %s\n", httpClient.errorToString(statusCode).c_str());
        }
     
      while(!client.connected()){   // boucle pour tester pendant 2 secondes max
              delay(10);
              LOC_compteur++ ;
              if ( LOC_compteur >= 200){
                   LOC_compteur = 0;
                   Serial.println("la connection du serveur à échouer");
                   break;              
                 }
           }  
      Serial.println("");
      delay(10);
    }

    J'ai une erreur 400 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Able to send HTTP request out of the board.
    10:29:04.085 -> Got HTTP status: 400<html>
    10:29:04.085 -> <head><title>400 Bad Request</title></head>
    10:29:04.085 -> <body>
    10:29:04.085 -> <center><h1>400 Bad Request</h1></center>
    10:29:04.085 -> <hr><center>nginx</center>
    10:29:04.085 -> </body>
    10:29:04.085 -> </html>
    10:29:04.085 -> 
    10:29:06.074 -> la connection du serveur à échouer
    10:29:06.074 ->
    Merci de m'avoir lu !

  2. #2
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 921
    Par défaut
    quand je veux sécuriser la communication j'utilise https, donc je n'ai pas la réponse exacte en http mais avez vous testé en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      httpClient.setAuthorization("test", "test");
    avant le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     httpClient.begin("http://serveur.monserveur.fr");

    un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      WiFiClient client;
      HTTPClient http;
      http.setAuthorization("utilisateur", "motdepasse");
      int httpCode = http.begin(client, "http://mon.site.fr/");
      httpCode = http.GET();

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 106
    Par défaut
    Merci JAY M pour ta réponse,

    Malheureusement cela ne fonctionne pas.

    Je peux utiliser le https. Aurais-tu un bout de code exemple qui fonctionne ? stp

    Merci

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 106
    Par défaut
    Après réflexion ce n'est pas la communication que je souhaite sécurisé mais avoir une authentification.

    En arrivant sur la page j’aimerais rentrer un mdp afin de limiter le risque de manipuler ma page.

    C'est fou car je n'arrive pas a faire fonctionner un exemple ( d'ailleurs très peu trouver...)

  5. #5
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 921
    Par défaut
    Si vous mettez https://serveur.monserveur.fr/, est-ce que ça change quelque chose ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     httpClient.begin("https://serveur.monserveur.fr/");

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 106
    Par défaut
    Re,

    J'ai enfin réussi !!!.

    Grace à tes réponses Jay M j'ai persévéré . Par contre je ne l'explique pas.

    Il faut rajouter une requête à la fin de l'adresse du serveur.

    Voici le code qui fonctionne avec http et https. Sauf qu'avec https la réponse est bien plus longue à arriver.

    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
    HTTPClient http;
     
      http.setAuthorization("test", "test");  
      http.begin("https://serveur.monserveur.fr/Read_Base_ESP.php");
     
      int httpCode = http.GET();    // J'enregistre le code recu
     
      if (httpCode > 0)             //Check for the returning code
      {      
        Serial.println(httpCode);
        String payload = http.getString();
        Serial.println(payload);
      } 
      else
      {
        Serial.println("Error on HTTP request");
      } 
     
      http.end();
    EN rajoutant le à la fin j'ai bien le code 200 et la réponse du serveur est celle attendue.
    Si quelqu’un à une idée pourquoi ? je serais moins bête ce soir.

  7. #7
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 921
    Par défaut
    bonne nouvelle

    est-ce qu'il y a une réponse juste pour la homepage du site avec demande de mot de passe ?

Discussions similaires

  1. certificat client/ authentification par clé public
    Par castader dans le forum Sécurité
    Réponses: 2
    Dernier message: 24/03/2010, 13h30
  2. developement d'une application d'authentification client/serveur
    Par anisj1m dans le forum Général Java
    Réponses: 2
    Dernier message: 22/02/2007, 12h02
  3. [RESEAU] Authentification client linux sur serveur windows
    Par rvfranck dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 19/06/2006, 18h57
  4. Authentification client linux sur serveur windows
    Par rvfranck dans le forum Réseau
    Réponses: 4
    Dernier message: 19/06/2006, 07h27
  5. [JBoss][Jaas] Authentification client standalone
    Par mauvais_karma dans le forum Wildfly/JBoss
    Réponses: 5
    Dernier message: 18/05/2005, 11h42

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