Moment informel durant lequel on exprime en peu de mots comment on se sent et si on a une attente forte pour la réunion.
Ce n'est pas un moment de discussion mais d'expression individuelle et ce n'est pas obligatoire
Si l'une ou l'autre personne exprime une attente forte, merci de vous en occuper en priorité ou de la noter dans le hub ou dans un point approprié.
FIN: 17h30
La Contre Voie a écrit un comparatif récent sur les différents outils SSO existants:
https://lacontrevoie.fr/blog/2024/comparatif-de-onze-solutions-de-sso-libres/
Pour mémoire, on avait fait un Neutriton en 2021: https://wiki.neutrinet.be/fr/rapports/2021/02-20
Donc ça date un peu.
Il y avait pas énormément de solutions : LemonLDAP, Keycloak, et euh c'est tout en libre.
Maintenant, plus de solutions sont devenues matures. Du coup, c'est pertinent de réévaluer la question.
A l'époque, le choix s'était aussi tourné vers keycloak parce que c'était un outil connu en interne. Il y avait déjà eu des changements dans la config mais moins de changements et de polémiques avec Red hat que par la suite.
Il y a 3 manières de faire la config des clients OpenID, des clés publiques/privées, création d'utilisateurs, etc. : - Avec des fichiers de config - Avec des API - A la main
C'est pénible Keycloak parce qu'il faut faire à la main. Ou utiliser l'outils cli : https://www.keycloak.org/securing-apps/client-registration-cli
Même si en principe on ne refait pas ce genre de config tous les quatre matins.
Mais bon, ce serait chouette quand même de pouvoir intégrer la config du SSO dans le playbook Ansible, comme ça on peut boire notre café / ice tea en paix :cocktail:
Comme pour la Contrevoie, on peut se demander : Qu'est-ce qu'on veut comme fonctionnalités au final ?
Nos critères majeurs: - Libre - OpenID - Logiciel maintenu - Flow d'inscription - Flow de connexion - Deux facteurs ~~postaux~~ TOTP - Configurable avec ansible
Nos critères secondaires / majeurs non bloquants: - Traduit en français (c'est aussi un portail pour les membres) - Portail d'applications
Nos critères en bonus: - Traduit en néerlandais, allemand, wallon, brusseleir, flamand, etc. - Solution antispam libre (par ex: captcha, mais pas que) - RBAC (Gestion ACL, en général géré dans l'application) - Champs personnalisables (si ce n'est pas géré par le SSO, ça le sera dans l'application)
Comme il y a l'idée de faire un CHATONS « chez mémé », est-ce qu'il faudra migrer des services de Neutrinet chez Mémé ? Est-ce qu'il faudra deux SSO ?
Si on a un seul SSO pour les deux entités, cela peut-être intéressant d'avoir les ACL. A priori, pour deux entités, le plus simple, c'est deux SSO séparés.
Le chiffre indique le nombre d'humains/robots autour de la table qui ont déjà utilisé (même très vaguement) l'outil
Nous le connaissons un peu et on n'avait fait un neutriton dessus. Pas grand chose à rajouter par rapport à ce qu'en dit la Contrevoie.
Après, on n'en est pas satisfaits, c'est un peu la raison pour laquelle on cherche autre chose.
Les principaux défauts sont:
C'est écrit en Go. Il faut un annuaire LDAP. De notre côté, on peut aussi utiliser LLDAP, qui est un tout petit annuaire, prévu pour le cas d'usage que nous avons.
https://github.com/lldap/lldap
À voir si configurable avec Ansible, mais la config étant du YAML ça semble faisable.
À voir si configurable avec Ansible
Ca fait plus que du SSO, c'est toute la gestion d'identité. Ca a l'air complexe et un peu infernal quand on lit les retours de la Contrevoie. En outre :
Très compliqué à déployer
Entre temps la v3 est sortie, mais il n'y a toujours pas moyen de personnaliser les champs du formulaire.
À voir pour le déploiement avec Ansible Le gros problème c'est que c'est orienté pour un usage de CHATONS, et plus particulièrement de leur CHATONS. Par exemple, quand on se connecte, on a un portail d'application. Mais Canaille crée un email identifiant unique pour se connecter dans l'application. Les emails réels ne sont jamais utilisés. Donc l'idée c'est d'avoir plusieurs logins vers les applications. Depuis le SSO, on choisit alors son profile pour se connecter (exemple, des gens qui sont dans plusieurs assoc'. Donc a priori, c'est moins pertinent dans notre usage.
Enfer à déployer / configurer avec Ansible (clicodrome)
C'est très lié à YunoHost. Ce n'est pas vraiment un SSO en tant que tel même si c'est dans le nom.
Il faudrait le tester pour bien voir ce que ça propose.
Keycloak coche une grande part de nos besoins. Mais pas la possibilité de le déployer avec Ansible, ce qui est un critère important pour nous pour ne pas se taper la tête contre les murs - on préfère préserver un peu nos têtes.
Authelia, ça nous laisse un peu sur notre fond. Il y a des choses qu'on laisse de côté et il n'y a pas de formulaire d'inscription. Donc on passe à autre chose.
Authentik, il n'y a pas de captcha, mais ce n'est pas vraiment dans nos critères forts. A priori, il coche toutes les autres cases. PS: P.s. l'utilise.
Ory est trop compliqué à déployer de toute façon (autant faire de Keycloak alors).
Cassdor, ça pourrait être bien, mais la partie sécurité fait un peu peur… Mais il faudrait se faire notre propre avis car cela a pu changer depuis le comparatif de la Contrevoie. Ceci dit, il y a une version tous les jours et pas de gestion de version… donc ça nous semble fort instable. A priori, on préfère quelque chose de stable.
Zitadel, il faudrait le tester pour affiner.
Canaille n'est a priori pas vraiment pertinent pour notre usage.
LemonLDAP, un critère pourrait être de l'utiliser malgré ses défauts de manière à renforcer une connaissance dessus et pouvoir se soutenir mutuellement avec Nubo. Mais Nubo pourrait à un moment changer son SSO, et alors ce choix ne serait plus très pertinent. Et c'est assez complexe à prendre en main, on risque de s'épuiser là-dessus. À l'inverse, avoir une pratique d'un autre outil pourrait permettre à Nubo de changer d'outil s'il le souhaite.
Rauthy, il faudrait le tester.
Donc, on doit tester:
1) Authentik → Tharyrok
2) Casdoor → HgO
yarn start3) Zitadel → Célo 4) Rauthy → THarYrok
Qu'est-ce qu'on veut tester pour valider ou invalider un des quatre choix ?
Installation: un peu complexe car peu documenté (bug lors de la compilation), mais sinon c'est un binaire, avec un fichier de config assez basique. A priori, tout se fait via l'interface web. Par contre, on peut importer des données (liste des utilisateurs par ex)
Il y a une API: https://casdoor.org/docs/basic/public-api
Créé une nouvelle organisation Neutrinet, on peut définir les paramètres liés à cette orga, ainsi que les champs qui seront utilisés.
Par contre, tout n'est pas super clair, les mots de passe sont en clair par défaut, etc. Le workflow n'est pas évident, on peut assigner une app à une organisation, un compte à une organisation, et le bouger d'une orga à une autre, mais pourtant à ce stade pas possible de se connecter via la nouvelle organisation…
Quand il y a une erreur, l'utilisateur n'a pas d'infos, juste un gros écran rouge et noir. Il n'y a pas non plus d'infos côté backend…
ssh xxx@2001:913:1d00:102::1002 -L 8080:localhost:8080 La commande qui lance le schmilblick.
ZITADEL_DATABASE_POSTGRES_HOST=localhost ZITADEL_DATABASE_POSTGRES_PORT=5432 ZITADEL_DATABASE_POSTGRES_DATABASE=zitadel ZITADEL_DATABASE_POSTGRES_USER_USERNAME=zitadel ZITADEL_DATABASE_POSTGRES_USER_PASSWORD=zitadel ZITADEL_DATABASE_POSTGRES_USER_SSL_MODE=disable ZITADEL_DATABASE_POSTGRES_ADMIN_USERNAME=zitadel ZITADEL_DATABASE_POSTGRES_ADMIN_PASSWORD=zitadel ZITADEL_DATABASE_POSTGRES_ADMIN_SSL_MODE=disable ZITADEL_EXTERNALSECURE=false zitadel start-from-init --masterkey "MasterkeyNeedsToHave32Characters" --tlsMode disabled
Pour qu'il écoute sur le domaine, nous avons tenté :
export ZITADEL_DATABASE_POSTGRES_HOST=localhost export ZITADEL_DATABASE_POSTGRES_PORT=5432 export ZITADEL_DATABASE_POSTGRES_DATABASE=zitadel export ZITADEL_DATABASE_POSTGRES_USER_USERNAME=zitadel export ZITADEL_DATABASE_POSTGRES_USER_PASSWORD=zitadel export ZITADEL_DATABASE_POSTGRES_USER_SSL_MODE=disable export ZITADEL_DATABASE_POSTGRES_ADMIN_USERNAME=zitadel export ZITADEL_DATABASE_POSTGRES_ADMIN_PASSWORD=zitadel export ZITADEL_DATABASE_POSTGRES_ADMIN_SSL_MODE=disable export ZITADEL_EXTERNALDOMAIN=zitadel.zitadel.mnl.neutri.net export ZITADEL_EXTERNALSECURE=false zitadel setup --masterkey "MasterkeyNeedsToHave32Characters" --tlsMode disabled zitadel start-from-init --masterkey "MasterkeyNeedsToHave32Characters" --tlsMode disabled
On n'a pas terminé l'installation de Zitadel, quelques petits détails à régler. Il y a moyen de customiser l'interface. Il faut utiliser le tunnel ssh pour s'y connecter car le match entre le domaine configuré et celui utiliser ne correspond pas.
Pour Casdoor, l'installation est terminée. Par contre, pas encore réussi à se connecter dans l'organisation créée. A priori, on peut un peu custom les formulaire, mettre des logo sur les applications et sur l'organisation. Par contre la prise en main n'est pas intuitive car les tooltips ne sont pas claire, et les libéllés sont -_- encore moins claire. Par contre, il y a un guide de démarrage qui peut être intéressant, mais je l'ai lu en diagonale pour le moment.
Pour Authentik, l'interface de login est super customisable. Si on se connecte, on voit la liste des apps, et on peut même les grouper. On peut mettre une description sur l'application. Il y a les blueprint (fichiers YAML) qui peuvent permettre l'automatisation.
Pour Rauthy, bon déjà le logout ne marche pas. La page d'accueil est super minimaliste, on ne peut pas beaucoup customiser (changer les couleurs). La page de profil est fonctionnelle, mais reste minimaliste. L'admin est adminimaliste. Si on a besoin d'un truc extrêmement légére, ça peut faire l'affaire. Tharyrok n'est pas satisfait.
Du coup, on va faire un focus sur authentik, et si ça ne va pas on reviendra vers Casdoor et Zitadel.
TODO:
Prochaine réunion : 13/09 à 10h30
Lieu : Chez Célo
Garde-Pad : Célo (+ rattrappage)
Moment informel durant lequel on exprime en peu de mots comment, à titre personnel, la réunion a été vécue que ce soit positif ou négatif. Si une ou plusieurs tension est née durant la réunion, il est peut-être nécessaire d'envisager l'une ou l'autre réunion pour y remédier.