Protection de JeedomConnect.api.php

Bonjour, il me semble avoir remarqué que dans les appels à JeedomConnect.api.php

la methode GET_PLUGIN_CONFIG n’est pas protégée par apiKey.
Si ma compréhension est bonne, elle ne fait pas partie du flow d’authentification/connexion (‹ PING ›, ‹ CHECK_AUTHENT ›, ‹ CHECK_USER ›, ‹ VERIF_2FA ›).

Je suggère si c’est possible de la protéger par apikey de manière à ne pas divulguer

"internalHttpUrl": "http://xxxx,
"internalWsAddress": "xxxxx",
"pluginJeedomVersion": "vxxxxx"

Bonjour,

cette méthode est appelée lors de la connexion par login/mot de passe, avant que l’appli dispose d’une clé api.

En revanche, un userHash est transmit avec cette requête et il devrait être possible de vérifier ça je pense.

1 « J'aime »

Merci de la réponse! si je comprend bien le code, un peu comme dans GET_AVAILABLE_EQUIPEMENT

Une suggestion de piste aussi pour renforcer la sécurité serait de profiter du mécanisme de jeedom pour lutter contre le bruteforce du mot de passe qui bannit un utilisateur si trop de tentatives erronées. Pour cela, me semble-t-il il faudrait tester user::isBan() / user::failedLogin() je crois.

un truc du genre

if (user::isBan()) {
    throw new Exception(__('Votre IP est bannie', __FILE__));
}

$user = user::connect($username, $password);

if (!is_object($user)) {
    user::failedLogin(); // <-- C'est ici que votre code doit l'appeler !
    sleep(5);
    throw new Exception(__('Échec lors de l\'authentification', __FILE__));
}

Bon je crois que j’ai cassé qch avec ma config de reverse proxy,

L’app n’arrive plus à se connecter avec les traces suivantes:
Bizarre, l’app m’affiche une fenêtre pour choisir un équipement (alors que j’ai passé le qr code de l’equipement iphone) et ensuite ne va pas plus loin

0000|[2026-09-07 23:35:51] DEBUG  [API] Request Received {"method":"CHECK_AUTHENT","params":{"login":"hlehoux","password":"****************","apiKey":"4b1****************"},"jsonrpc":"2.0","id":1788816951896}
0001|[2026-09-07 23:35:51] DEBUG  [API] Send CHECK_AUTHENT -> {"type":"SET_AUTHENT","payload":{"userHash":"tbNaauZBCd******************************************************","userProfil":"admin"}}
0002|[2026-09-07 23:35:51] DEBUG  [API] Request Received {"method":"CHECK_USER","params":{"userHash":"tbNaauZBCd******************************************************","apiKey":"4b1********************"},"jsonrpc":"2.0","id":1788816951967}
0003|[2026-09-07 23:35:51] DEBUG  ClientIp => 176.165.102.228
0004|[2026-09-07 23:35:51] DEBUG  network => external
0005|[2026-09-07 23:35:51] DEBUG  localOnly => 0
0006|[2026-09-07 23:35:51] DEBUG  [API] Send CHECK_USER -> {"type":"SET_CHECK_USER","payload":{"twoFactorAuthentificationRequired":false}}
0007|[2026-09-07 23:35:52] DEBUG  [API] Request Received {"method":"GET_PLUGIN_CONFIG","params":{"userHash":"tbNaauZBCd******************************************************","apiKey":"4b*************"},"jsonrpc":"2.0","id":1788816952014}
0008|[2026-09-07 23:35:52] DEBUG  [API] Send GET_PLUGIN_CONFIG -> {"type":"PLUGIN_CONFIG","payload":{"useWs":"1","polling":"0","httpUrl":"https:\/\/pail*************","internalHttpUrl":"http:\/\/192.168.100.6","wsAddress":"wss:\/\/pailly***********","internalWsAddress":"ws:\/\/192.168.100.6:8090","pluginJeedomVersion":"v1.21.0"}}
0009|[2026-09-07 23:35:52] DEBUG  [API] Request Received {"method":"GET_AVAILABLE_EQUIPEMENT","params":{"userHash":"tbNaauZBCd******************************************************","apiKey":"4b******************"},"jsonrpc":"2.0","id":1788816952067}
0010|[2026-09-07 23:35:52] DEBUG  [API] Send GET_AVAILABLE_EQUIPEMENT -> {"type":"AVAILABLE_EQUIPEMENT","payload":[{"logicalId":"206**************","name":"Ipad herv\u00e9","enable":"1","useWs":"1","polling":"0","deviceName":"iPad","deviceId":"8A4E5CEF-CB63-4C2A-AF02-825CD2571E84"},{"logicalId":"4b1**************","name":"iphone","enable":"1","useWs":"1","polling":"0","deviceName":null,"deviceId":null},{"logicalId":"6ddb********","name":"Nexus 7","enable":"0","useWs":"1","polling":"0","deviceName":"Nexus 7","deviceId":"676******"},{"logicalId":"f3f2****","name":"Samsung Tab 9","enable":"0","useWs":"1","polling":"0","deviceName":"Tab A9 de V\u00e9ronique","deviceId":"47cffa74744e3e1b"}]}

Bonjour,

La correction a été apportée, nouvelle version du plugin dispo.

1 « J'aime »

Hop, mise à jour du plugin, rescan du QR code et tout roule, merci @jared-94 !

1 « J'aime »