Pourquoi une boucle de connexion au cloud privé apparaît-elle uniquement en dehors du réseau domestique ?

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.

Une boucle de connexion uniquement depuis l’extérieur signifie généralement que le chemin du proxy distant modifie le schéma, le nom d’hôte, le cookie, le callback ou les informations de session vues par l’application.

À l’intérieur du domicile, un navigateur peut se connecter directement au service de cloud privé via son adresse locale, tandis que les utilisateurs distants passent par un DNS public, une terminaison TLS, un proxy inverse, une couche d’authentification en avant, un tunnel ou un fournisseur d’identité. Les identifiants peuvent être acceptés correctement, mais la requête suivante renvoie à la page de connexion parce que le cookie de session n’est pas stocké ou renvoyé, le backend pense que HTTPS est HTTP, l’URL de callback diffère de la valeur enregistrée, ou l’application génère des redirections pour son nom d’hôte interne.

Capturer la boucle de redirection exacte dans le navigateur

Ouvrez le panneau réseau du navigateur avant de vous connecter depuis l’extérieur du domicile. Conservez le journal des requêtes et enregistrez chaque code d’état, l’en-tête Location, l’en-tête Set-Cookie, le nom d’hôte de la requête, et si le cookie de session apparaît lors de la requête suivante.

Un guide de dépannage Keycloak recommande d’observer la chaîne complète de redirections car des en-têtes forwardés manquants, la portée des cookies et les callbacks peuvent tous créer une redirection infinie de connexion même lorsque l’étape du mot de passe réussit.

Si aucun cookie n’est émis, examinez la réponse de l’application et du proxy. Si un cookie est émis mais non renvoyé, inspectez son domaine, chemin, attributs Secure et SameSite. Si le cookie est renvoyé mais que l’application redirige toujours, poursuivez avec la confiance du proxy et le stockage de session.

Comparer les noms d’hôte et schémas locaux et publics

Notez l’URL locale exacte et l’URL publique, incluant http ou https, le nom d’hôte, le port et le sous-chemin. Testez si l’application a une URL canonique ou externe configurée.

Une analyse WordPress avec proxy inverse explique que lorsque le backend croit que la requête est HTTP, il peut rediriger vers HTTPS de manière répétée alors que le proxy continue de terminer TLS. La boucle provient d’une mauvaise détection de HTTPS derrière le proxy plutôt que du mot de passe de l’utilisateur.

Utilisez un seul nom d’hôte public de manière cohérente pour la connexion distante, les callbacks et les cookies. Ne mélangez pas le domaine public, l’IP privée, le nom d’hôte interne et les ports alternatifs dans un même flux d’authentification sauf si l’application supporte explicitement plusieurs origines de confiance.

Vérifier les en-têtes Forwarded Host et Protocol

Vérifiez la configuration du proxy inverse et les journaux du backend pour X-Forwarded-Proto, X-Forwarded-Host, X-Forwarded-Port et l’adresse client originale. Confirmez que l’application ne fait confiance qu’au proxy connu et reconstruit la même URL publique utilisée par le navigateur.

Un cas qBittorrent avec proxy inverse note qu’une page de connexion peut se charger et accepter les identifiants tandis qu’un en-tête Host ou HTTPS non concordant empêche la session authentifiée d’être reconnue.

Si le proxy envoie les bonnes valeurs publiques mais que l’application les ignore, configurez les paramètres trusted-proxy et external-URL de l’application. Si le proxy les omet, ajoutez uniquement les en-têtes nécessaires plutôt que de transférer tous les en-têtes fournis par le client sans modification.

-15% OFF

Inspecter le domaine, chemin, Secure et SameSite du cookie

Comparez le cookie de session créé localement avec celui créé via le domaine public. Un cookie limité à un nom d’hôte interne, un mauvais domaine parent, un sous-chemin différent ou un contexte non sécurisé peut ne pas accompagner la requête publique redirigée.

L’accès externe ajoute souvent un autre domaine d’authentification ou un callback cross-site. Les restrictions SameSite et les exigences Secure peuvent donc affecter le flux distant même si une connexion locale directe ne quitte jamais une origine unique.

Effacez uniquement les cookies des domaines cloud privés affectés, reproduisez la boucle et inspectez les nouveaux attributs. Corrigez les paramètres d’URL publique et de cookie de l’application ou du proxy ; n’utilisez pas une relaxation globale des cookies du navigateur comme solution permanente côté serveur.

Vérifier l’identité du callback OAuth, OIDC ou Forward-Auth

Si le cloud privé utilise un fournisseur d’identité ou un service forward-auth, comparez l’URL de callback générée par l’application, enregistrée chez le fournisseur, et atteinte par le navigateur. Le schéma, nom d’hôte, port, chemin et slash final doivent tous correspondre exactement.

Un cas communautaire NGINX décrit une boucle de connexion distante où TLS se termine au proxy mais le backend voit HTTP, donc l’application ne peut pas maintenir la session externe sécurisée attendue.

Testez directement le point de terminaison de callback via le domaine public et confirmez qu’il atteint la bonne route proxy et le backend. Si l’authentification réussit mais que le callback relance la connexion, inspectez l’état, le nonce, la persistance du cookie, la synchronisation de l’horloge et l’URI de redirection exacte.

Valider la session distante complète sans contourner le proxy

Après avoir corrigé une cause, commencez avec une fenêtre privée propre sur un réseau externe. Connectez-vous, actualisez le tableau de bord, ouvrez un fichier, attendez au-delà de l’intervalle de session court, et reconnectez-vous pour confirmer que la session survit à une navigation ordinaire.

Le guide ZimaSpace sur l’accès NAS distant contrôlé fournit la limite de sécurité environnante : corriger la boucle ne doit pas nécessiter d’exposer directement le backend ni de désactiver l’authentification.

Le problème est résolu uniquement lorsque les utilisateurs locaux et distants atteignent le nom d’hôte prévu, que le proxy préserve l’identité de la requête publique, que le cookie reste valide, et que le flux complet de connexion et de callback réussit de manière répétée. Supprimez les contournements temporaires et les journaux d’authentification verbeux après vérification.

Assistance et conseils

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.