Comment Home Assistant authentifie-t-il les sessions locales et distantes ?

Eva Wong est la rédactrice technique et bricoleuse résidente chez ZimaSpace. Geek depuis toujours, passionnée par les homelabs et les logiciels open source, elle se spécialise dans la traduction de concepts techniques complexes en guides accessibles et pratiques. Eva croit que l’auto-hébergement doit être amusant, pas intimidant. À travers ses tutoriels, elle donne à la communauté les moyens de démystifier les configurations matérielles, depuis la construction de leur premier NAS jusqu’à la maîtrise des conteneurs Docker.

Home Assistant ne crée généralement pas un système d’authentification pour le réseau local et un autre pour l’accès à distance. L’utilisateur s’authentifie auprès de l’instance Home Assistant, les applications reçoivent des jetons, et ces jetons authentifient les sessions API ou WebSocket, que la requête arrive via une URL locale, Home Assistant Cloud, un VPN ou un proxy inverse.

Ce qui change entre l’utilisation locale et distante, c’est principalement le chemin réseau : DNS, TLS, proxy, tunnel et accessibilité publique. Il est important de séparer le routage de l’identité, car une URL distante défaillante peut ressembler à un problème de connexion même lorsque les identifiants et les jetons de l’utilisateur Home Assistant sont toujours valides.

Les applications s’authentifient une seule fois et reçoivent des jetons d’accès et d’actualisation

Le flux d’authentification des applications Home Assistant génère un code d’autorisation, puis un jeton d’accès et un jeton d’actualisation. Le jeton d’accès à courte durée de vie est utilisé pour les appels API ; le jeton d’actualisation permet à l’application de demander un nouveau jeton d’accès sans demander à l’utilisateur de se reconnecter à chaque session.

L’actuelle documentation de l’API d’authentification décrit le flux d’autorisation, de jeton d’accès, de jeton d’actualisation et de jeton Bearer HTTP. Lorsqu’un jeton d’accès devient invalide, une requête API HTTP renvoie 401 et le client doit actualiser le jeton ou s’authentifier de nouveau.

Cela sépare l’autorisation à long terme d’un utilisateur de la courte durée de vie d’un identifiant API donné.

Les sessions WebSocket s’authentifient avant le début de la diffusion de l’état en temps réel

L’interface et de nombreuses applications maintiennent une connexion WebSocket ouverte afin que Home Assistant puisse diffuser les mises à jour d’état et d’événements sans interroger le serveur à chaque changement.

L’API WebSocket de Home Assistant définit une phase d’authentification explicite : le serveur envoie auth_required, le client renvoie un jeton d’accès, et seule une réponse auth_ok fait passer la connexion à la phase des commandes.

Un jeton invalide met fin à cette session. Un délai d’attente réseau avant le début de l’échange d’authentification correspond à une défaillance différente d’une réponse auth_invalid après réception du jeton par le serveur.

L’accès à distance modifie la manière dont le client atteint Home Assistant

Par défaut, Home Assistant est local. L’accès à distance peut être fourni par Home Assistant Cloud, un VPN, un proxy inverse ou un chemin direct volontairement sécurisé. Chaque option modifie le routage et l’exposition, mais la destination reste la même instance Home Assistant.

Le guide actuel sur l’accès à distance distingue les itinéraires Cloud, VPN, proxy inverse et redirection de ports. Les proxys inverses introduisent également une limite de confiance, car Home Assistant doit savoir quel proxy est autorisé à fournir les informations de requête transmises.

C’est pourquoi une modification du routeur, du DNS, du certificat ou du proxy peut interrompre l’accès à distance sans qu’il soit nécessaire de recréer les utilisateurs.

Les sessions locales et distantes peuvent présenter des risques réseau différents

Une connexion au réseau local peut rester à l’intérieur d’un réseau domestique de confiance, tandis qu’une connexion distante peut traverser l’Internet public ou un réseau superposé. Une conception distante sécurisée ajoute donc le chiffrement, le renforcement du proxy, une politique VPN et l’authentification multifacteur autour du même système de comptes Home Assistant.

Ne confondez pas « même modèle d’authentification » et « même exposition réseau ». Un port public direct, un tunnel cloud géré et un VPN privé présentent des surfaces d’attaque différentes, même si tous trois finissent par transmettre des jetons d’accès Home Assistant.

Le guide de sécurité de l’accès à distance de ZimaSpace fournit le cadre réseau plus large nécessaire pour décider quel chemin doit transporter ces sessions authentifiées.

Faites la distinction entre les défaillances de routage et d’authentification

Symptôme Couche probablement concernée Première distinction
Le nom d’hôte distant ne se résout pas DNS / routage L’authentification n’a pas commencé
Erreur TLS ou proxy avant la connexion Chemin d’accès distant Testez l’accès local direct
HTTP 401 renvoyé par l’API Home Assistant Jeton / authentification Actualisez le jeton ou authentifiez de nouveau le client
Le WebSocket renvoie auth_invalid Jeton / authentification Validez l’autorisation du client
L’accès local fonctionne, mais le chemin distant échoue DNS/VPN/proxy/NAT Ne réinitialisez pas les utilisateurs en premier

Le modèle mental le plus simple est le suivant : identité d’abord, jeton de session ensuite, chemin réseau enfin. Les clients locaux et distants peuvent emprunter des chemins réseau très différents, mais ils ont toujours besoin d’une autorisation Home Assistant valide une fois qu’ils ont atteint l’instance.

FAQ

L’accès distant à Home Assistant nécessite-t-il un autre mot de passe ou un autre compte ?

Non. Les clients distants s’authentifient généralement auprès du même système d’utilisateurs Home Assistant. La méthode d’accès à distance modifie la manière dont le client atteint l’instance, et non la base d’utilisateurs qui gère le compte.

Dois-je supprimer les jetons lorsque seule l’URL distante ne fonctionne plus ?

Pas en première intention. Vérifiez d’abord que le DNS, le VPN, le proxy, le TLS ou le NAT permettent d’atteindre Home Assistant. Réinitialisez les jetons ou authentifiez de nouveau les clients lorsque Home Assistant lui-même rejette l’authentification, et non simplement lorsque le chemin réseau est indisponible.

Centre Tech & IA

Plus à lire

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.