Jeedom derrière un SSO basé sur authelia (et du LLDAP)

Bonjour,

j’ai mis en place un Jeedom interfacé avec un LDAP (LLDAP) et derrière un SSO (authelia).
Authelia va automatiquement capturer les URLs de Jeedom. Le problème est qu’il faut en laisser certaines qui doivent être accessible sans authentification. J’ai commencé une liste d’exception, si vous en voyez d’autre ?

Au passage, je vous pousse ma conf Traefik qui va faire reverse proxy de tout ça.

La config authelia avec les bypass :

access_control:
  ## Default policy can either be 'bypass', 'one_factor', 'two_factor' or 'deny'. It is the policy applied to any
  ## resource if there is no policy to be applied to the user.
  default_policy: deny

  # networks:
    # - name: internal
    #   networks:
        # - 10.10.0.0/16
        # - 192.168.2.0/24
    # - name: VPN
    #   networks: 10.9.0.0/16

  rules:
    # Jeedom
    - domain: jeedom.domain.com 
      resources:
        - '^/core/api/jeeApi.php(.*)?$'
        - '^/data/(3d|backgrounds|fonts|img|object|plan|scenario|view)/(.*)?$'
        - '^/plugins/JeedomConnect/core/api/JeedomConnect.api.php(.*)?$'
        - '^/plugins/JeedomConnect/core/php/eventServer.php(.*)?$'
        - '^/plugins/googlecast/tmp/(.*).mp3$'
        - '^/plugins/gsh/core/php/jeeGsh.php$'
        - '^/here.html$'
        - '^(.*)\.php\?api(K|k)ey=(.*)$'
      policy: bypass
    - domain: jeedom.domain.com 
      policy: two_factor

Et la conf traefik :

http:
  routers:
    jeedom:
      rule: Host("jeedom.domain.com ")
      service: jeedom
      middlewares:
        - authelia@docker
      tls:
        certresolver: letsencrypt
      entryPoints:
        - "web"
  services:
    jeedom:
      loadBalancer:
        servers:
          - url: "http://10.0.1.8/"
1 « J'aime »

Bonjour,
Merci pour ton partage.

J’ai pour ma part Authelia et Swag.
J’ai mis un paramétrage un peu lourd avec 2 URL différentes si j’utilise Jeedom directement (one_factor) ou si j’utilise Jeedom Connect via un socket (bypass)
J’ai un souci avec une seule URL et Jeedom Connect via socket.

Utilises-tu la connexion via Socket ?

Non, je n’en ai pas vu l’utilité. Après le websocket est sur un autre port. Donc dans authelia tu peux facilement filter.

Je viens de rajouter toute la partie data :

        - '^/data/(3d|backgrounds|fonts|img|object|plan|scenario|view)/(.*)?$'
1 « J'aime »

Bonjour,
Ma Jeedom (DIY) est derrière un proxy SWAG avec authentification via Authelia. J’utilise JeedomConnect connecté en HTTP(s) et j’ai mis en place dans Authelia les exceptions pour JeedomConnect. Tout fonctionne en connexion Lan, mais en connexion 4G seule la commande « jouer un son » ne fonctionne pas alors qu’elle fonctionne quand le téléphone est connecté en wifi. J’ai mis Jeedom en bypass complet sur Authelia et dans ce cas ça fonctionne. Le fichier son est dans /var/www/html/data. J’ai essayé de mettre le fichier dans le dossier « img » mais c’est pareil. Je me doute qu’il s’agit de mettre en place une nouvelle exception, mais je ne sais pas trop comment faire. Je ne souhaite pas non plus laisser Jeedom sans double authentification juste pour pouvoir faire sonner mon téléphone.
J’ai pas mal cherché dans les différents forum mais malheureusement je n’ai rien trouvé qui corresponde à ma configuration et à mon besoin. Sinon, tant pis, je me passerais de cette commande.
Merci pour votre aide.
Cordialement

Ma config :

Jeedom Core : 4.3.19 (V4-stable)
DNS Jeedom : non

Statut Démon : Stoppé (NA)
Version JC : 1.8.0.2 stable

Equipements :
  S20FE : v1.8.0 stable sur android [os : 33] - PA

Tu a l’URL exact ? Car si tu regarde ma règle, il y a des limites

        - '^/data/(3d|backgrounds|fonts|img|object|plan|scenario|view)/(.*)?$'

Merci de me répondre.
Dans la commande demandant au téléphone de jouer un son, je dois mettre le chemin absolu où se trouve le fichier : /var/www/html/data/mon fichier_son.mp3
Si je le mets dans le sous répertoire « img », cela ne change rien, cela marche en wifi (connexion en adresse locale 192.168…) mais pas en 4G bien que le répertoire « img » matche ta règle. Enfin, c’est ce que je comprends, mais la probabilité que je me trompe est très, très élevée.
Ci-dessous la commande.

Ce que je ne comprends pas, c’est que le bypass est plus là pour les applications ou les usages API qui ne sont pas connectés. Mais toi si tu affiches ton interface Jeedom, alors tu es connecté.
Donc tu ne devrait pas avoir de problème.
Je me demande si le problème c’est pas ailleurs… Déjà /var/www/html n’est pas une URL, mais un chemin. http://, https:// ou file:// sont des URL.

Effectivement, tout fonctionne avec JeedomConnect sauf ça, enfin c’est ce que j’ai pu identifier sur l’utilisation que j’en fait. En mettant un bypass sur Authelia, je te confirme que la commande « joue un son » fonctionne avec une connexion 4G, je viens de refaire le test à l’instant.
Je sais bien ce qu’est une URL, mais je ne sais pas quelle URL tu veux.
Dans les logs de l’application Jeedomconnect sur mon téléphone, j’ai exactement les même lignes lorsque ça marche ou pas. Dans les logs du plugin JeedomConnect, aucune erreur a priori.

2024-05-13 15:00:24][INFO] : Send notification to [2778] with data {"type":"ACTIONS","payload":{"action":"playSound","sound":"\/var\/www\/html\/data\/Son1461.mp3","time":1715605224}} [2024-05-13 15:00:24][DEBUG] : Send output : 2024/05/13 15:00:24 {"multicast_id":4821803750316054776,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1715605224883349%5d4eda78f9fd7ecd"}]} [2024-05-13 15:00:26][DEBUG] : [SSE] eventServer init client #504 [2024-05-13 15:00:27][DEBUG] : [API] Request Received {"method":"SET_BATTERY","params":{"level":71,"apiKey":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},"jsonrpc":"2.0","id":1715605227331} [2024-05-13 15:00:27][DEBUG] : [API] Send SET_BATTERY -> null [2024-05-13 15:00:42][DEBUG] : [SSE] eventServer connexion closed for client #504 [2024-05-13 15:00:42][DEBUG] : ------ setListener started -- adding listener for fx sendCmdInfoToShortcut [2024-05-13 15:00:42][DEBUG] : ------ confControls [2024-05-13 15:00:42][DEBUG] : ------ cmdControls_ids [] [2024-05-13 15:00:42][DEBUG] : ------ setListener started -- adding listener for fx sendActiveControl

Je ne pige pas.
Je vais essayer de mettre le fichier sur mon téléphone.

Merci en tout cas de prendre du temps pour me répondre.

Moi j’ai Traefik. Je le passerais en debug pour voir l’URL appelée. Après dans SWAG, je ne sais pas.

Bonne idée d’analyser le fichier de log de Swag, j’aurais du y penser avant. J’ai pu voir que Jeedom télécharge le fichier « son » indépendamment du plugin JeedomConnect.
j’ai ajouté la ligne suivante comme nouvelle exception dans Authelia et ça fonctionne.
‹ ^/core/php/downloadFile.php(.*)?$ ›

Encore merci pour ton aide.