- Status Nouveau
- Percent Complete
- Task Type Anomalie
- Category Freebox OS → API
- Assigned To No-one
- Operating System Tous
- Severity Low
- Priority Very Low
- Reported Version 4.5.8
- Due in Version Undecided
-
Due Date
Undecided
-
Votes
1
- hého (27/08/2022)
- Private
Opened by hého - 27/08/2022
FS#36981 - [résolu] 2022, API mafreebox.freebox.fr, session token, erreur dans la Doc
Bonjour à tous,
pour info,
après plusieurs essais infructeux dans tous les sens
j'ai enfin réussi à obtenir un session token
la doc API intégrée à la freebox (https://mafreebox.freebox.fr/doc/index.html#)
est erronée concernant le calcul du "password".
ce password est necessaire dans la requête du session token
—> dans la doc est écrit
—> dans le paragraphe "Obtaining a session_token"/"password string"
—> password = hmac-sha1(app_token, challenge) (←– CECI NE FONCTIONNE PAS)
avec le password ainsi calculé,
j'obtenais en réponse à la requête de session token (POST http)
Status Code: 403 Forbidden msg: Erreur d'authentification de l'application error_code: invalid_token
Pour que ça fonctionne,
il faut inverser app_token et challenge dans la formule
(CECI CI-DESSOUS FONCTIONNE)
(variables challenge et app_token préalablement attribuées bien sûr)
#en php $password = hash_hmac("sha1", $challenge, $app_token); #ou en bash password=$(echo -n $challenge | openssl sha1 -hmac $app_token | cut -d '=' -f2 | sed 's/ //g')
—> et avec le bon password, ça passe mieux
—> session_token (enfin) reçu
en remarques complémentaires (de ce que j'en ai compris),
- l'app_token une fois sollicité/autorisé/validé est pérenne - le challenge par contre, à une durée de validité courte (30 secondes), validité courte qui est donc conférée au password. Et donc pour réussir l'obtention du session_token, la requête/obtention du challenge, le calcul du password et la requête du session_token doivent être fait pendant cette période de validité de 30 secondes. - je suppose que le session_token est relativement pérenne (pas pu tester longtemps) mais on sait maintenant comment en solliciter un autre...
HTH,
cordialement,
hého
Loading...
Available keyboard shortcuts
- Alt + ⇧ Shift + l Login Dialog / Logout
- Alt + ⇧ Shift + a Add new task
- Alt + ⇧ Shift + m My searches
- Alt + ⇧ Shift + t focus taskid search
Tasklist
- o open selected task
- j move cursor down
- k move cursor up
Task Details
- n Next task
- p Previous task
- Alt + ⇧ Shift + e ↵ Enter Edit this task
- Alt + ⇧ Shift + w watch task
- Alt + ⇧ Shift + y Close Task
Task Editing
- Alt + ⇧ Shift + s save task
Bonjour,
pour compléter sur les remarques complémentaires de la fin du message précédent,
après test, la durée de validité du session_token est de 30 minutes.
HTH,
cordialement,
hého
Bonjour
désolé je n'ai pas vu le poste plus tôt…
En bash, depuis OpenSSL 3+ avec Debian12 (contrairement à openssl 1.1.1n en Debian =<11) l'expression fournie plus haut ne fonctionne plus :
Concernant la durée d'expiration du token, en effet c'est environ 30 minutes mais on s'en sort assez bien depuis son terminal bash avec les fonctions permettant de s'auto relogin
Et visiblement ça fonctionne aussi sur des sessions interractives websocket (par exemple pour récupérer les consoles des VM en websocket et les laisser idle pendant plusieurs heures sans perdre la connexion)
Je maintien une lib en bash qui exploite l'API et qui commence à faire pas mal de choses, si vous avez besoin contactez moi
Cordialement
Bonjour nbanda!
Je me greffe à cette demande. Merci beaucoup pour ta réponse super utile.
A tout hazard est-ce que tu publies publiquement cette librairie bash quelque part? J'ai commencé à faire quelques scripts mais mon niveau est nul et si ça existe déjà je n'ai pas envie de réinventer la roue.
Merci
Bonjour
Oui, j'ai d'ailleurs commit des fix et des fonctions pour les VM hier… mais désolé pas encore pu mettre la doc à jour avec les nouvelles fonctions, mais pas d'inquiétudes toutes les fonctions "frontend" ont leur "help" intégré car une fois la lib sourcée et une fois connecté, les fonctions "frontend" sont utilisables comme des programmes ou des commandes du shell bash.
La doc sur github et de nouvelles fonctions pour creer et modifier des vm arriveront prochainement.
La lib est ici :
https://github.com/nbanb/fbx-delta-nba_bash_api.sh
Un programme plus avancé de gestion des vm utilisant la lib :
https://github.com/nbanb/fbxvm-ctrl
La lib contient ~115 fonctions à date, et une grande partie est documentée sur la page du projet github
Lisez bien la doc des fonctions, normalement il y a tout ce qu'il faut pour que vous soyez autonome.
Je reste néanmoins disponible si vous avez des questions.
Cordialement
nbanba
Bonjour
Pour les VM, la lib supporte maintenant directement :
Je n'ai pas encore écrit la doc mais chaque fonction dispose de son 'help' contenant des exemples.
Les autres fonctions de la library sont documentés sur la page github du projet
Cordialement
nbanba
Bonjour
Petite précision pour le maintien des sessions websocket:
Une fois la connexion websocket établie, on ne peut pas rafraîchir le $_SESSION_TOKEN sans relancer la connexion complète ⇒ ça kill la session courante.
Avec certains dirty hack en forkant sur des pipes, on y arrive mais comme écrit ce sont des dirty hacks et il est possible de perdre des paquets dans l'opération, aucune garantie…
Cependant l'ajout d'un low level keepalive dans le websocket résout le problème.
Les fonctions de la lib permettant l'accès à des flux websocket long (vm consoles, vm vnc display screen) ont ce keepalive dans le websocket et les sessions tiennent jusqu'à ce qu'on les kill (plusieurs jours si on veut).
Cordialement
nbanba