Authelia/Swag/HA: erreur auth.log après deconnexion

Bonjour
J’essaye d’accéder à mon installation HA à distance via authelia et swag/nginx le tout installé dans des containers docker.
Au démarrage tout fonctionne: Authelia (avec 2FA) puis menu d’accès HA. J’observe toutefois un problème: je suis rapidement déconnecté de HA après la 1ère connexion, une nouvelle page d’accueil HA se présente et là plus de problème pour accéder à HA.

Maintenant si je suis déconnecté de cette session (par exemple en étant resté trop longtemps inactif) et que j’essaie de me reconnecter j’obtiens le message suivant sous le logo HA:
Unable to fetch auth providers

Dans la barre de navigation du navigateur que j’utilise (firefox ou chrome) s’affiche une ligne du genre:

https://homeassistant.mysubdomain.duckdns.org/auth/authorize?response_type=code&redirect_uri=https%3A%2F%2Fhomeassistant.mysubdomain.duckdns.org%2F%3Fauth_callback%3D1&client_id=https%3A%2F%2Fhomeassistant.mysubdomain.duckdns.org%2F&state=eyJoYXNzVXJsIjoiaHR0cHM6Ly9ob21lYXNzaXN0YW50LmNoYWxhaXMuZHVja2Rucy5vcmciLCJjbGllbnRJZCI6Imh0dHBzOi8vaG9tZWFzc2lzdGFudC5jaGFsYWlzLmR1Y2tkbnMub3JnLyJ9)

Il ne me reste qu’à vider le cache du navigateur pour pouvoir accéder à nouveau à HA… Très frustrant
C’est la seule appli avec laquelle j’ai ce problème. Pour accéder à portainer, firefox ou au panel zigbee2mqtt je n’ai pas de difficulté.
Y-a-t’il un problème de cohabitation entre HA et Authelia et/ou Swag ?
Merci par avance pour votre aide
Jacques

Salut
Je n’ai pas encore essayé, mais il y a une procédure ici :

Merci. Elle semble confirmer l’existence d’un problème de co-existence Authelia/HA. Cela n’a pas l’air complètement trivial mais je vais peut-être essayer :slight_smile:

Alors je n’utilise plus swag et authelia mais je peux vous dire que cela fonctionne.

ma dernière trace de config que j’avais à tester :

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name nom_de_domaine.*;

    include /config/nginx/ssl.conf;

    client_max_body_size 0;

    if ($lan-ip = yes) {
        set $geo-whitelist yes;
        }
    if ($geo-whitelist = no) {
        return 404;
        }
    if ($geo-blacklist = no) {
        return 404;
        }

    enable for Authelia
    include /config/nginx/authelia-server.conf;


    location / {

        enable for Authelia
        include /config/nginx/authelia-location.conf;

        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        set $upstream_app IP_HOME_ASSISTANT;
        set $upstream_port 8123;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;
        error_page 404 500 502 503 504 = @fallback;

    }

    location ~ ^/(api|local|media)/ {
        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        set $upstream_app IP_HOME_ASSISTANT;
        set $upstream_port 8123;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;
        error_page 404 500 502 503 504 = @fallback;
    }

    location @fallback {
        rewrite ^/(.*) https://www.lequipe.fr/?;
    }
}

Merci @jerome6994 . J’ai testé ton fichier et il me génère exactement les mêmes problèmes. Il est d’ailleurs pratiquement équivalent au mien:

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name homeassistant.*;

    include /config/nginx/ssl.conf;

    client_max_body_size 0;

#   enable for Authelia (requires authelia-location.conf in the location block)
    include /config/nginx/authelia-server.conf;

    location / {
    
#       enable for Authelia
        include /config/nginx/authelia-location.conf;
        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        set $upstream_app homeassistant;
        set $upstream_port 8123;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;
    }

    location ~ ^/(api|local|media)/ {

        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        set $upstream_app homeassistant;
        set $upstream_port 8123;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;
    }
}

Encore une fois la 1ère connexion se fait. C’est la reconnexion qui ne marche pas sauf à vider le cache du navigateur. Plutôt pour un pb de cookie ? J’avoue ne pas comprendre l’enchainement qui me même à ce message d’erreur. Je n’ai d’ailleurs pas de message d’erreur dans le fichier error.log de nginx
Par curiosité @jerome6994 par quoi as-tu remplacé swag & authelia ?

J’ai npm et authentik

Désolé cela fonctionnait à l’époque

Bon j’ai essayé et cela ne marche pas. L’intégration proposée n’est pas maintenue et les témoignages confirme qu’elle est facilement mise en défaut par une nouvelle version de HA ou d’Android.

Donc je renonce.

Le problème de fond semble être l’opposition résolue des développeurs de HA d’intégrer un processus d’authentification standard type OIDC. Cette lettre ouverte est éclairante.

Ensuite HA propose le 2FA et n accès externe sécurisé nativement plus simple à mettre en œuvre sans inquiétude de boulette

Bonjour @jnilo,
Je n’utilise pas Swag, mais Traefik couplé à OAuth et Authelia pour certain site, mais pas pour HA.

As-tu des soucis de connexion à HA si tu ne le fais pas passer par Authelia ?

Bonjour @chris_77
Non aucun si je ne passe pas par Authelia. C’est ce que je fais du coup avec un fail2ban pour limiter les tentatives de connexion trop nombreuses :slight_smile:

1 « J'aime »

Bonjour @jerome6994,
Le module d’authentification peut-il être installé facilement dans un environnement docker ?
A quoi fais-tu référence lorsque tu parles d’un accès externe sécurisé nativement ?

Alors il y a pas besoin de faire du yaml pour ça c’est dispo en cliquant sur ton user :

image

par contre en yaml, tu peux mettre du fail2ban qui banni les IP qui tente de se connecter avec des erreurs de mots de passe trop fréquente.

Puis tu as la partie Nabu Casa qui t’offre un accès externe sécurisé sans bricolage

ça fait déjà pas mal de chose possible

1 « J'aime »