Hiboo issueshttps://forge.tedomum.net/acides/hiboo/-/issues2024-03-10T20:14:40Zhttps://forge.tedomum.net/acides/hiboo/-/issues/26Roles : séparer modérateurs et admins2024-03-10T20:14:40Zkaiyoupierre@jaury.euRoles : séparer modérateurs et adminsbackloghttps://forge.tedomum.net/acides/hiboo/-/issues/30Gestion d'un profil purgé2024-01-20T18:37:12ZAngedestenebresGestion d'un profil purgéUne fois le profil supprimé + purgé (donc supprimé également dans l'application), il faut :
- qu'il n'apparaisse plus dans l'interface par souci de cohérence
- qu'on décide :
- s'il doit rester dans la BD en tant que nom de profil im...Une fois le profil supprimé + purgé (donc supprimé également dans l'application), il faut :
- qu'il n'apparaisse plus dans l'interface par souci de cohérence
- qu'on décide :
- s'il doit rester dans la BD en tant que nom de profil impossible à créer pour l'application (anti usurpation a posteriori)
- s'il doit être release pour être de nouveau disponible à la création, car on considèrerait que les données ayant été effacée de l'application, il n'y a pas de problème
- si on a le choix : au moment de la purge, mettre une coche « libérer le nom du profil pour ce server » (décoché par défaut)0.2.0https://forge.tedomum.net/acides/hiboo/-/issues/10Admin : gestion des managers de service2024-01-20T18:20:20Zkaiyoupierre@jaury.euAdmin : gestion des managers de servicebackloghttps://forge.tedomum.net/acides/hiboo/-/issues/20Ajouter une option "mot de passe perdu"2024-03-08T23:54:36ZAngedestenebresAjouter une option "mot de passe perdu"Il n'est actuellement pas possible pour l'utilisateurice d'être autonome dans la récupération de son mot de passe. Or, il lui est possible de renseigner une adresse mail dans ses informations de contact. Il semble pour le moins dommage q...Il n'est actuellement pas possible pour l'utilisateurice d'être autonome dans la récupération de son mot de passe. Or, il lui est possible de renseigner une adresse mail dans ses informations de contact. Il semble pour le moins dommage que cette adresse mail ne puisse pas être demandée à l'utilisateurice, en plus de son username, en cas de perte de mot de passe.
Cette feature pourrait être accompagnée d'un bandeau d'avertissement, de type :
> Vous n'avez pas renseigné d'adresse mail, ceci peut être nécessaire pour recevoir des notifications des services ou pour réinitialiser votre mot de passe.
Il est vrai que cela incite les gens à mettre leur adresse Gmail, mais quoiqu'il arrive, à l'heure actuelle si un·e utilisateurice utilise Gmail et perd son mot de passe, l'admin est bien obligé·e de lui envoyer le lien de réinitialisation sur cette adresse. Cela ne fait que déplacer le problème, au détriment de l'autonomie de l'utilisateurice (que Hiboo n'a pas vocation à sensibiliser même si on adorerait).
<details><summary>issue originale ouverte il y a 4 ans</summary>
Tout est dans le titre.
Aujourd'hui, cette option manque et si on a perdu son mot de passe, on est alors bien embêté :sweat_smile:
</details>1.0.0https://forge.tedomum.net/acides/hiboo/-/issues/25Modération : ban par IP2024-01-20T18:41:52Zkaiyoupierre@jaury.euModération : ban par IPPermettre un ban IP complet sur HibooPermettre un ban IP complet sur Hiboohttps://forge.tedomum.net/acides/hiboo/-/issues/15Supporter l'authentification par un tiers OIDC2024-01-20T18:16:15Zkaiyoupierre@jaury.euSupporter l'authentification par un tiers OIDCbackloghttps://forge.tedomum.net/acides/hiboo/-/issues/39Ajout d'une sécurité pour assigner manuellement un profil utilisateur à un co...2024-01-21T12:11:19ZAngedestenebresAjout d'une sécurité pour assigner manuellement un profil utilisateur à un compteActuellement, cela fonctionne bien mais il faut absolument pas se tromper sans quoi c'est trop tard.
Je propose d'ajouter une étape après la sélection du compte par sécurité :wink:Actuellement, cela fonctionne bien mais il faut absolument pas se tromper sans quoi c'est trop tard.
Je propose d'ajouter une étape après la sélection du compte par sécurité :wink:0.1.1 (reboot)ornanovitchornanovitchhttps://forge.tedomum.net/acides/hiboo/-/issues/58Pouvoir supprimer un profil non réclamé2024-03-20T09:47:53ZAngedestenebresPouvoir supprimer un profil non réclaméSuite à une demande pour faire supprimer un compte lié à un profil non réclamé dans Hiboo, je me suis aperçu qu'aucune action n'était possible pour ce profil là.
Il serait bien d'en avoir pour pouvoir agir dessus.Suite à une demande pour faire supprimer un compte lié à un profil non réclamé dans Hiboo, je me suis aperçu qu'aucune action n'était possible pour ce profil là.
Il serait bien d'en avoir pour pouvoir agir dessus.0.1.1 (reboot)ornanovitchornanovitchhttps://forge.tedomum.net/acides/hiboo/-/issues/42S'inscrire aux services directement via l'interface d'Hiboo2024-01-20T19:01:28ZAngedestenebresS'inscrire aux services directement via l'interface d'HibooL'idée serait à terme de voir si on ne peut avoir la liste des services intégrés dans Hiboo pour pouvoir s'inscrire dessus sans avoir à visiter chaque service un à un.
Comme dit sur Matrix, techniquement, cela posera quelques contrainte...L'idée serait à terme de voir si on ne peut avoir la liste des services intégrés dans Hiboo pour pouvoir s'inscrire dessus sans avoir à visiter chaque service un à un.
Comme dit sur Matrix, techniquement, cela posera quelques contraintes mais cela devrait être possible en faisant un lien vers le service qui ramènera à son tour sur Hiboo.1.0.0https://forge.tedomum.net/acides/hiboo/-/issues/13Modération : ajout de note sur un profil2024-01-20T18:14:46Zkaiyoupierre@jaury.euModération : ajout de note sur un profilbackloghttps://forge.tedomum.net/acides/hiboo/-/issues/12Modération : support du suspend temporaire de compte2024-01-20T18:13:29Zkaiyoupierre@jaury.euModération : support du suspend temporaire de compte1.0.0https://forge.tedomum.net/acides/hiboo/-/issues/50Notification pour les admins quand il y a des comptes en attente de validation2024-03-10T20:14:40ZAngedestenebresNotification pour les admins quand il y a des comptes en attente de validationActuellement, nous ne pensons clairement pas à aller vérifier les demandes. Il faudrait mettre quelque chose à place pour y penser.
Plusieurs possibilités :
* [ ] Mail de notification
* [ ] Popup à la connexion (une fois les autres enl...Actuellement, nous ne pensons clairement pas à aller vérifier les demandes. Il faudrait mettre quelque chose à place pour y penser.
Plusieurs possibilités :
* [ ] Mail de notification
* [ ] Popup à la connexion (une fois les autres enlevés)
* [x] Une icône avec un chiffre à côté du menu, ex :
![Capture_d_écran_2020-05-29_17-52-02](/uploads/1d966a64d0933869af68e893f08190c3/Capture_d_écran_2020-05-29_17-52-02.png)
A noter qu'il est possible d'en choisir plusieurs :)1.0.0https://forge.tedomum.net/acides/hiboo/-/issues/7Ajouter du rate limiting sur les endpoints2024-01-20T18:06:53Zkaiyoupierre@jaury.euAjouter du rate limiting sur les endpoints1.0.0https://forge.tedomum.net/acides/hiboo/-/issues/49Supporter le partage de profil2024-01-20T19:54:21Zkaiyoupierre@jaury.euSupporter le partage de profilPour supporter le partage de profil, il faut qu'on ajoute déjà la notion de partage, dans une table séparée. Le user renseigné dans le profil reste le propriétaire du profil, et les autres y ont simplement accès pour s'authentifier, par ...Pour supporter le partage de profil, il faut qu'on ajoute déjà la notion de partage, dans une table séparée. Le user renseigné dans le profil reste le propriétaire du profil, et les autres y ont simplement accès pour s'authentifier, par le modifier.
Suite à des discussions sur matrix et à une proposition de @f00wl, il a été décidé d'utiliser un JWT, cette fonction est incluse dans la librairie authlib, déjà utilisée dans hiboo.
Sur la page de liste de profils, on peut afficher un second tableau avec les profils partagés, en simple list lecture seule. Et sur la page de choix de profil on peut récupérer les profils partagés en plus et remplir enfin l'information sur le partage qui est juste une phrase statique actuellement.1.0.0https://forge.tedomum.net/acides/hiboo/-/issues/63Matrix - Compte toujours présent après suppression + purge2024-01-20T19:06:41ZAngedestenebresMatrix - Compte toujours présent après suppression + purgeNormalement, après ces deux actions, le compte n'est plus censé apparaitre sur les salons et pourtant après deux tests effectués, je confirme que les comptes Matrix sont toujours présents :
![image](/uploads/4c36d4553de719eb8d63d3a22ff8...Normalement, après ces deux actions, le compte n'est plus censé apparaitre sur les salons et pourtant après deux tests effectués, je confirme que les comptes Matrix sont toujours présents :
![image](/uploads/4c36d4553de719eb8d63d3a22ff89e76/image.png)
![image](/uploads/67bc44e5938d80ea94669382ec6fbaae/image.png)0.2.0https://forge.tedomum.net/acides/hiboo/-/issues/62Changer la phrase annonçant la suppression d'un profil à venir2024-01-20T19:07:34ZAngedestenebresChanger la phrase annonçant la suppression d'un profil à venirActuellement, nous avons une phrase ressemblant à cela :
`%adminname did delete the profile %username on %servicename`
vu que la suppression n'est pas immédiate, je suggère de changer celle-ci pour indiquer qu'une demande est en cours...Actuellement, nous avons une phrase ressemblant à cela :
`%adminname did delete the profile %username on %servicename`
vu que la suppression n'est pas immédiate, je suggère de changer celle-ci pour indiquer qu'une demande est en cours et que la suppression sera effective à tel moment. Exemple :
`%adminname requested the deletion of the profile %username on %servicename for the following date: YYYY-MM-DD HH:MM`1.0.0https://forge.tedomum.net/acides/hiboo/-/issues/9Page d'édition de profil utilisateur2024-01-21T12:11:19Zkaiyoupierre@jaury.euPage d'édition de profil utilisateur0.2.0ornanovitchornanovitchhttps://forge.tedomum.net/acides/hiboo/-/issues/33Documentation admin2024-01-22T17:20:08ZAngedestenebresDocumentation adminTout est dans le titre.Tout est dans le titre.0.2.0https://forge.tedomum.net/acides/hiboo/-/issues/65Changement de langue dans les options2024-01-21T12:11:19ZJae Lo PrestiChangement de langue dans les optionsAjouter un moyen de changer la langue de Hiboo indépendamment de la langue du navigateur (pour par exemple pouvoir avoir le logiciel en Esperanto alors que certains navigateurs ne le supportent pas).Ajouter un moyen de changer la langue de Hiboo indépendamment de la langue du navigateur (pour par exemple pouvoir avoir le logiciel en Esperanto alors que certains navigateurs ne le supportent pas).1.0.0ornanovitchornanovitchhttps://forge.tedomum.net/acides/hiboo/-/issues/68Afficher les caractères acceptés pour le username lors de la création d'un pr...2024-01-20T19:28:36ZAngedestenebresAfficher les caractères acceptés pour le username lors de la création d'un profilActuellement rien ne l'indique et il faudrait améliorer ce point.Actuellement rien ne l'indique et il faudrait améliorer ce point.1.0.0https://forge.tedomum.net/acides/hiboo/-/issues/69Evolution des CAPTCHA2024-01-20T19:29:11ZAngedestenebresEvolution des CAPTCHACette issue rassemble les réflexions sur l'avenir des CAPTCHA dans Hiboo et autour. Le premier post contient des liens vers des sources externes utiles et d'éventuels commnetaires dimensionnants plus bas. Le reste est une discussion en c...Cette issue rassemble les réflexions sur l'avenir des CAPTCHA dans Hiboo et autour. Le premier post contient des liens vers des sources externes utiles et d'éventuels commnetaires dimensionnants plus bas. Le reste est une discussion en cours sur l'état de l'art et les axes d'innovation autour des CAPTCHA.
Articles sur l'état des lieux des captcha :
- Etat de l'art de la PoW pour les CAPTCHA : https://privacypass.github.io/
- Sur le côté déprimant des CAPTCHA : https://onezero.medium.com/why-captcha-pictures-are-so-unbearably-depressing-20679b8cf84a
- Juste pour rire, un XKCD : https://xkcd.com/2228/
- Service de résolution de CAPTCHA avec API : https://anti-captcha.com/
- Pourquoi les CAPTCHA simples suffisent souvent : https://nearcyan.com/you-probably-dont-need-recaptcha/
- Condensé de liens sur les CAPTCHA : https://zyszys.github.io/awesome-captcha/
Solutions hébergeables, parfois libres :
- VisualCaptcha : https://visualcaptcha.net/
- PHP Captcha : https://www.phpcaptcha.org
- Python Lepture Captcha : https://github.com/lepture/captcha
- Negative Captcha : https://github.com/subwindow/negative-captcha
Services de CAPTCHA :
- reCaptcha : https://www.google.com/recaptcha/about/
- hCaptcha : https://www.hcaptcha.com/
Réflexions d'autres projets open source, incluant de nombreux liens vers des solutions évaluées, et généralement pas de réponse finale :
- https://github.com/matomo-org/matomo/issues/13905 (conclusion : aucune)
- https://github.com/Chocobozzz/PeerTube/issues/1946 (conclusion : plugins variés)
- https://github.com/vector-im/element-web/issues/3606 (conclusion : aucune)
- https://github.com/matrix-org/matrix-doc/issues/1281 (conclusion : aucune)
- https://gitlab.com/gitlab-org/gitlab-foss/-/issues/46548 (conclusion : aucune)
- https://gitlab.com/gitlab-org/gitlab/-/issues/201788 (conclusion : aucune)backloghttps://forge.tedomum.net/acides/hiboo/-/issues/70Accueil de l'utilisateur - Remettre un message d'aide2024-01-20T19:30:43ZAngedestenebresAccueil de l'utilisateur - Remettre un message d'aideComme suggéré sur Matrix par Natouille.
Par ailleurs, je me dis qu'on pourrait mettre un texte explicatif et si possible un champ ajustable pour mettre un lien vers de la doc. Dans notre cas, ça serait : https://tedomum.net/documentatio...Comme suggéré sur Matrix par Natouille.
Par ailleurs, je me dis qu'on pourrait mettre un texte explicatif et si possible un champ ajustable pour mettre un lien vers de la doc. Dans notre cas, ça serait : https://tedomum.net/documentation/account/
Pour le lien, ça serait un peu dans le principe de Peertube ou Mobilizon où peut mettre le lien vers ses CGU.1.0.0https://forge.tedomum.net/acides/hiboo/-/issues/72[Docs] Migrating from SQLite to PostgreSQL2024-01-20T19:32:04Zf00wl[Docs] Migrating from SQLite to PostgreSQL### Migrate from SQLite to PostgreSQL with [pgloader](https://pgloader.readthedocs.io/en/latest/ref/sqlite.html#sqlite-database-source-specification-from)
SQLite is the default database engine, mainly for development purpose but it shou...### Migrate from SQLite to PostgreSQL with [pgloader](https://pgloader.readthedocs.io/en/latest/ref/sqlite.html#sqlite-database-source-specification-from)
SQLite is the default database engine, mainly for development purpose but it should be enough for small instance. If you want to migrate to PostgreSQL afterward you can follow theses steps (Debian based):
1. Install and configure PostgreSQL, create a new database (ex... `hiboo`) with the right owner if you don't use `postgres`: [help](https://linuxize.com/post/how-to-install-postgresql-on-debian-10/)
2. install pgloader: https://pgloader.readthedocs.io
``` shell
apt install pgloader
```
3. by default pgloader convert `datetime` to `timestamptz` and it raise error on hiboo so create pgloader command-file `/tmp/pgloader-hiboo.conf`:
``` sql
LOAD database
FROM sqlite:///tmp/hiboo.db
INTO postgresql:///hiboo
CAST type datetime to timestamp using sqlite-timestamp-to-timestamp;
```
4. shutdown hiboo to avoid data loss during migration
``` shell
service hiboo stop # if you created systemd file
```
5. backup your sqlite file
``` shell
cp hiboo.db hiboo.db.bak
```
6. make sure `postgres` user can read the SQlite db and the pgloader config file:
``` shell
chown postgres:postgres /tmp/hiboo.db
chown postgres:postgres /tmp/pgloader-hiboo.conf
```
7. import
``` shell
sudo -u postgresql pgloader /tmp/pgloader-hiboo.conf
```
8. If you created specific user you will probably need to set the right owner:
``` shell
su - postgres psql <dbname>
```
then inside psql:
``` sql
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO <username>;
```
`<CTRL-D>` to exit
9. don't forget to setup SQLAlchemy with the right URI
``` shell
SQLALCHEMY_DATABASE_URI='postgres://<dbuser>:<password>@localhost:5432/<dbname>'
```
10. Restart hiboo, check if it works and clean the mess!
_If it's fail restore the SQLite backup file and database URI configuration._backloghttps://forge.tedomum.net/acides/hiboo/-/issues/78Captcha : utile et inaccessible2024-01-20T19:32:44ZtuxmainCaptcha : utile et inaccessibleLe captcha de Hiboo repose uniquement sur du visuel, et est donc inutilisable par des non-voyants ou mal-voyants, même avec des technologies d'accessibilité.
Il serait possible d'y ajouter un test audio (bien que j'ai déjà rencontré le ...Le captcha de Hiboo repose uniquement sur du visuel, et est donc inutilisable par des non-voyants ou mal-voyants, même avec des technologies d'accessibilité.
Il serait possible d'y ajouter un test audio (bien que j'ai déjà rencontré le cas d'un sourd-aveugle ne pouvant utiliser un tel captcha), ou bien une phrase du type "que font deux plus 3", ou même une case à cocher et une case à ne pas cocher (les robots cochant la case qu'il ne faut pas cocher).
Cela représenterait une perte théorique de sécurité, mais aucun captcha actuel ne résisterait à une attaque ciblée. Je n'ai jamais observé d'attaque ciblée, donc je pense que l'essentiel est d'avoir un système légèrement différent de celui par défaut, afin de tromper les robots naïfs.1.0.0https://forge.tedomum.net/acides/hiboo/-/issues/105feature request: groupes2024-01-20T19:33:17Zornanovitchfeature request: groupesDans la perspective de migrer la quasi totalité de nos users sur Hiboo, il nous serait très bénéfique d'avoir des groupes auxquels les assigner (avec une table `group` et une relation `many-to-many`). Il y aurait plusieurs intérêts à cel...Dans la perspective de migrer la quasi totalité de nos users sur Hiboo, il nous serait très bénéfique d'avoir des groupes auxquels les assigner (avec une table `group` et une relation `many-to-many`). Il y aurait plusieurs intérêts à cela :
1. On pourrait l'étendre à l'avenir pour passer des groupes en claims. Parmi les applications qui le supportent : Nextcloud SAML (même si ça a l'air buggy) mais surtout OIDC (faudrait peut-être y passer à l'avenir), Gitlab SAML (en premium pour l'instant...), mais sans doute d'autres, je n'ai pas regardé toutes les applications.
1. Ça peut être très pratique pour « ranger » les users en fonction de leur provenance, catégorie ou autre critère pour une petite association hébergeuse type CHATON qui souhaite contrôler ses inscriptions. Par exemple, chez nous on a pas mal d'associations et de collectifs à qui on ne donne pas accès aux mêmes applications, et parfois on ne sait plus si tel username correspond à un·e membre de tel asso ou de tel collectif. (D'ailleurs, on pourrait créer des tokens d'invitation qui assignent automatiquement les users qui s'inscrivent à un groupe précis.)
1. **Surtout**, et en prolongement du point qui précède, on pourrait ultérieurement développer un système assez simple de permissions dans Hiboo, qui utiliserait les groupes et favoriserait notamment le développement de la modération/de l'autogestion. Exemples :
* pour l'application `Gitlab`, on permet uniquement aux membres du groupe `Cambouis` de créer un profil (dans la limite de la politique de profil définie).
* pour l'application `Synapse`, on donne au groupe `Mod-synapse` la permission de voir et gérer les profils
* pour l'application `Nextcloud`, on permet uniquement aux membres du groupe `collectif` de partager un profil (quand la feature sera là)
* ...
Ça nous parait ouvrir vachement de possibilités assez intuitives et transversales pour un outil de gestion des authentifications en tout cas.backloghttps://forge.tedomum.net/acides/hiboo/-/issues/111Remplacer jwcrypto par Authlib2024-02-18T23:06:08Zf00wlRemplacer jwcrypto par AuthlibLa librairie `jwcrypto` est utilisée une seule fois pour le [captcha](hiboo/captcha/fields.py) pour générer ou vérifier un JWT. On pourrait faire la même chose avec `Authlib` qui est déjà utilisée et enlever `jwcrypto` des dépendances.La librairie `jwcrypto` est utilisée une seule fois pour le [captcha](hiboo/captcha/fields.py) pour générer ou vérifier un JWT. On pourrait faire la même chose avec `Authlib` qui est déjà utilisée et enlever `jwcrypto` des dépendances.0.1.1 (reboot)f00wlf00wlhttps://forge.tedomum.net/acides/hiboo/-/issues/114Sensibilité à la casse dans le nom d’utilisateur des profils Hiboo2024-01-29T14:47:54ZAznörthSensibilité à la casse dans le nom d’utilisateur des profils HibooIl serait pratique de permettre l’utilisation de majuscules & minuscules dans la création d’un profil Hiboo. En effet, Mastodon — et très sans doute d’autres des services hébergés — supportant cela, pouvoir faire par exemple du Camelcase...Il serait pratique de permettre l’utilisation de majuscules & minuscules dans la création d’un profil Hiboo. En effet, Mastodon — et très sans doute d’autres des services hébergés — supportant cela, pouvoir faire par exemple du Camelcase dans un nom d’utilisateur rendrait beaucoup plus lisible certains des noms d’utilisateurs contenant plusieurs mots.
Un point amené dans le salon Matrix était qu’« il faudrait tacler la question de la sensibilité à la casse : si quelqu'un crée un profil MonProfil il ne faut pas que quelqu'un d'autre puisse créer un profil monprofil et se connecter à sa place, ce qui sera le cas par défaut. »
Bon courage pour le développement,0.1.1 (reboot)f00wlf00wlhttps://forge.tedomum.net/acides/hiboo/-/issues/115Blocklist pour les noms d'utilisateurices et de profile sensibles2024-01-29T14:47:58Zf00wlBlocklist pour les noms d'utilisateurices et de profile sensiblesPour éviter que des utilisateurices s'enregistrent ou enregistrent des profils avec des noms de qui peuvent prêter à confusion/erreurs de privilèges/phishing et autres. Les nom comme `root`, `admin`, etc ne devraient pas être autorisés à...Pour éviter que des utilisateurices s'enregistrent ou enregistrent des profils avec des noms de qui peuvent prêter à confusion/erreurs de privilèges/phishing et autres. Les nom comme `root`, `admin`, etc ne devraient pas être autorisés à la création (à l'exception des administrateurices).
- [ ] définir une blocklist
- [ ] ajouter une règle de non appartenance à la block liste à la création du `username`
- [ ] ajouter une règle de non appartenance à la block liste à la création/claim d'un `profile`
Pour la liste il ya deux options possible:
1. La configurer via une variable d'environnement avec une liste simple par défaut, ex: `USERNAME_BLOCK_LIST = ["root", "admin", "sudo", "www-data"]`
2. Utiliser une lib qui propose une liste déjà bien fournie, ex: [the-big-username-blacklist-python](https://github.com/marteinn/the-big-username-blacklist-python)0.1.1 (reboot)f00wlf00wlhttps://forge.tedomum.net/acides/hiboo/-/issues/116Possible vol d'identitée à la création de profil2024-01-29T14:48:01Zf00wlPossible vol d'identitée à la création de profilActuellement quand un·e utilisateurice créer un profil, rien de lui interdit de choisir le nom d'utilisateurice d'un autre compte que le sien à moins que le profil avec le même nom existe déjà.
Ce comportement part défaut peut être souh...Actuellement quand un·e utilisateurice créer un profil, rien de lui interdit de choisir le nom d'utilisateurice d'un autre compte que le sien à moins que le profil avec le même nom existe déjà.
Ce comportement part défaut peut être souhaitable mais peut aussi potentiellement conduire à une usurpation d'identité et à du « squat de username ».
![image](/uploads/730e8a04ba5fa9862e970d95543a234c/image.png)
Par exemple dans ce cas, si `f00wl` à l'habitude d'échanger avec `bar` sur plusieurs applications il sera tenté de lui partager des fichiers sur le service `Test` avec le nom `bar` qui en réalité appartient à `foo`.
Bien sûre on peut laisser les utilisateurices vérifier à qui iels s’adressent sur internet, c'est une bonne pratique mais je pense que ce serait quand même une bonne chose d'implémenter cette feature « secure by design ».
Pour ça il suffit:
- [ ] ajouter la liste des utilisateurices à la blocklist des noms de profils à la création d'un profile.
- [ ] Il faudrait éventuellement gérer le problème de #114+ en même temps0.1.1 (reboot)f00wlf00wlhttps://forge.tedomum.net/acides/hiboo/-/issues/118Mettre à jour les images docker2024-01-21T12:06:14Zf00wlMettre à jour les images docker- [ ] `python:3`
- [ ] `node:buster` :arrow_right: `node:bookwrm`
- [x] `python:3-slim-bulleseye` :arrow_right: `python:3-slim-bookworm`- [ ] `python:3`
- [ ] `node:buster` :arrow_right: `node:bookwrm`
- [x] `python:3-slim-bulleseye` :arrow_right: `python:3-slim-bookworm`0.1.1 (reboot)kaiyoupierre@jaury.eukaiyoupierre@jaury.euhttps://forge.tedomum.net/acides/hiboo/-/issues/119État des lieux et perspectives2024-01-21T12:05:41Zf00wlÉtat des lieux et perspectivesSalut,
Après réflexions, @ornanovitch et moi-même (@f00wl), on aimerait vous proposer un état des lieux du développement de Hiboo, et quelques perspectives d'avenir.
*Nous ne sommes pas les devs principaux, donc ce qu'on dit est à pren...Salut,
Après réflexions, @ornanovitch et moi-même (@f00wl), on aimerait vous proposer un état des lieux du développement de Hiboo, et quelques perspectives d'avenir.
*Nous ne sommes pas les devs principaux, donc ce qu'on dit est à prendre avec le recul nécessaire. @kaiyou reste le plus à même de juger de la codebase.*
Hiboo est un **super** projet:
- La [réflexion sur l'authentification](https://write.tedomum.net/tedomum/hiboo-re-inventons-la-roue-de-lauthentification) avec laquelle nous sommes toujours en accord.
- Des fonctionnalités assez introuvables ailleurs (plusieurs profiles, possibilité de claim, changement de type d'application, api pour masquer les emails etc.) qui ont été bien pensées dès le début pour les administrateurices et les utilisateurices.
- La qualité du code et sa factorisation, promesse d'une autonomie dans le développement.
- La simplicité et la légèreté de l'application qui contraste avec les usines à gaz comme keycloak ou gluu.
Tout ça nous a convaincu de l'adopter il y a trois ans comme solution SSO de notre petite infrastructure, et de participer à son développement.
Notre contribution au développement de Hiboo s'est fait en dents de scie (une scie bien édentée), mais on a quand même réussi à résoudre quelques bugs, dev quelques features (invitation, 2FA, groupes, templates flarum et nextcloud), passer à admin-lte v3 et à poetry, ainsi que pas mal d'améliorations et optimisation du front, et enfin à remettre en place une instance Weblate pour les traductions. Merci @kaiyou pour ton aide bienveillante sur tout ça.
Malgré ça, et malgré les maj apportées ponctuellement par @kaiyou :pray: et les contributions de toustes les autres contributeurices :pray:, Hiboo souffre d'un manque de développement de plus en plus criant :
- 19 [dépendances directes](https://bpa.st/NM3Q) sur 19 à mettre à jour :expressionless:
- dont 12 dépendances contiennent des breaking changes :sob:
- [27 vulnérabilités](https://bpa.st/V76A) trouvées dans 9 paquet (17 concernant la crypto) :scream:
- 35 issues ouvertes
- la dernière issue fermée remonte à 6 mois
- 2 issues ~"type / security" sans activité depuis 6 mois
- 6 issues en ~"priority / 1" sans activité depuis 5 mois
- 1 MR ouverte pour changement de licence sans activité depuis 1 an
Là s'impose un constat qu'il va bien falloir regarder en face : Hiboo n'est pas vraiment maintenu, et n'est clairement pas à la hauteur d'être utilisé comme « Security framework for small-sized hosting services ». Aussi petites soient nos infras, la sécurité de nos utilisateurices et de leurs données est compromise. Combien d'instances Hiboo sont actuellement en prod d'ailleurs ? On ne sait guère si d'autres que celles de la FELINN et de Tedomum existent.
Nous avons identifié quelques raisons qui nous font arriver à ce constat:
- manque de contributeurices (dev, test, traduction, etc.)
- manque de temps consacré à ce projet
- manque de compétences partagées entre les devs (par exemple on se repose beaucoup sur @kaiyou pour audit le code, car il semble à ce jour le plus compétant, notamment sur les questions de sécurité)
Nous pensons qu'il est temps faire un choix quant à l'avenir de Hiboo, en évitant de tomber dans le piège de l'[escalade d'engagement](https://fr.wikipedia.org/wiki/Escalade_d'engagement).
Voici en très gros ce que ça pourrait impliquer, c'est juste une idée, la suite serait à construire ensemble.
```mermaid
flowchart TD
A[Abandon de Hiboo]
A -->|oui| B{Alternatives}
B -->|migration ?| BA(keycloak)
B -->|migration ?| BB(authelia)
B -->|migration ?| BC(authentik)
BA --> BAA[PR les features manquantes]
BB --> BAA
BC --> BAA
A -->|non| C{dev soutenable}
C --> CA[communauté active]
C --> CB[devs engagé·es]
CA --> CAA[besoin de visibilité]
CA --> CAB[licence, coc, releases, etc]
CAA --> CAAA[mirroir github]
CAA --> CAAB[fediverse]
CAA --> CAAC[CHATONS]
CB --> CAA
CB --> CBA[payer un·e dev ?]
CBA --> CBAA[financement participatif]
CBA --> CBAB[demander une aide]
```
---
Nous espérons par ce message faire naître des discussions, qui nous permettront de savoir où nous en sommes et ce dont on est capable. Le but est de prendre une décision collective, alors n'hésitez pas à participer. Et quel que soit le choix qui sera fait, nous continuerons à nous entraider. On espère que ce message vous trouvera en forme !https://forge.tedomum.net/acides/hiboo/-/issues/120Documentation en Markdown buildée dans Hiboo2024-01-22T17:20:13Zkaiyoupierre@jaury.euDocumentation en Markdown buildée dans HibooIl serait idéal de pouvoir maintenir une documentation dans un format assez standard, type une arborescence de Markdown, mais de pouvoir l'embarquer directement dans Hiboo et la naviguer dans le thème classique.Il serait idéal de pouvoir maintenir une documentation dans un format assez standard, type une arborescence de Markdown, mais de pouvoir l'embarquer directement dans Hiboo et la naviguer dans le thème classique.0.2.0f00wlf00wlhttps://forge.tedomum.net/acides/hiboo/-/issues/121Documenter les principaux choix d'architecture2024-01-20T19:47:21Zkaiyoupierre@jaury.euDocumenter les principaux choix d'architectureCeux que j'ai en tête notamment :
- Emploi de blueprints Flask clairs
- Appui sur des forwards et forward backs pour les relations entre blueprints
- La partie SSO dans un blueprint à part pour ne pas trop mélanger avec les applications...Ceux que j'ai en tête notamment :
- Emploi de blueprints Flask clairs
- Appui sur des forwards et forward backs pour les relations entre blueprints
- La partie SSO dans un blueprint à part pour ne pas trop mélanger avec les applications
- Pourquoi des comptes et des profils distincts
- Pourquoi une fonction de claim
- Le cycle de vie des profils et comment ça pourrait interagir avec les applications0.2.0https://forge.tedomum.net/acides/hiboo/-/issues/122Fournir des refresh tokens OIDC2024-01-20T19:47:40Zkaiyoupierre@jaury.euFournir des refresh tokens OIDCOIDC et OAuth2 supportent le concept de refresh token pour disposer d'un access token de courte durée accédant au userinfo endpoint, et d'une capacité à le refresh. C'est en particulier employé par les applications compatibles OAuth2 qui...OIDC et OAuth2 supportent le concept de refresh token pour disposer d'un access token de courte durée accédant au userinfo endpoint, et d'une capacité à le refresh. C'est en particulier employé par les applications compatibles OAuth2 qui ne considèrent pas l'id token, ou doivent requêter le profil régulièrement.
Exemple : kubelogin pour l'authentification Kubernetes insère un access token frais dans les requêtes, obtenu depuis un refresh token.1.0.0https://forge.tedomum.net/acides/hiboo/-/issues/123Suppoter l'authentification Webauthn2024-01-20T19:48:54Zkaiyoupierre@jaury.euSuppoter l'authentification WebauthnEn complément de l'authentification 2FA, Webauthn est de plus en plus populaire, en particulier sur mobile. Le supporter en tant qu'authentification principale serait un plus.
Cela nécessitera probablement de revoir l'architecture d'aut...En complément de l'authentification 2FA, Webauthn est de plus en plus populaire, en particulier sur mobile. Le supporter en tant qu'authentification principale serait un plus.
Cela nécessitera probablement de revoir l'architecture d'authentification, bien que déjà assez souple sur le principe.backloghttps://forge.tedomum.net/acides/hiboo/-/issues/125Documentation utilisation2024-01-20T19:58:32ZornanovitchDocumentation utilisation1.0.0https://forge.tedomum.net/acides/hiboo/-/issues/126Documentation contribution2024-01-20T19:58:31Zf00wlDocumentation contribution0.2.0https://forge.tedomum.net/acides/hiboo/-/issues/128Protocole de release2024-01-21T12:05:06Zf00wlProtocole de releaseÀ partir de %"0.1.1 (reboot)" hiboo sera officiellement release, avec la norme [semver](https://semver.org/). Il faut donc décider d'une façon de le faire bien. Soit à la main avec un protocole claire. Soit automatiquement avec un outils...À partir de %"0.1.1 (reboot)" hiboo sera officiellement release, avec la norme [semver](https://semver.org/). Il faut donc décider d'une façon de le faire bien. Soit à la main avec un protocole claire. Soit automatiquement avec un outils comme https://github.com/semantic-release/semantic-release.0.1.1 (reboot)https://forge.tedomum.net/acides/hiboo/-/issues/129Veille des dépendances2024-01-21T12:07:42Zf00wlVeille des dépendancesPour nous faciliter et formaliser le suivit des dépendances qui peut être fastidieux mais crucial, je propose d'utiliser https://gitlab.com/renovate-bot/renovate-runner/. C'est un peu une usine à gaze mais c'est très efficace. Peut-être ...Pour nous faciliter et formaliser le suivit des dépendances qui peut être fastidieux mais crucial, je propose d'utiliser https://gitlab.com/renovate-bot/renovate-runner/. C'est un peu une usine à gaze mais c'est très efficace. Peut-être ça pourra servir pour les autres projet de tedomum aussi.
_Il est aussi possible de faire la veille juste avec un protocole claire entre les devs._backloghttps://forge.tedomum.net/acides/hiboo/-/issues/130Améliorer le dialogue de confirmation2024-03-12T17:46:49ZornanovitchAméliorer le dialogue de confirmationil faudrait améliorer l'ensemble de la logique de confirmation pour une action, pour pouvoir :
* passer un paramètre qui rappelle ce sur quoi on agit dans le template (tel profil, tel user...)
* ajouter un bouton `cancel` (actuellement,...il faudrait améliorer l'ensemble de la logique de confirmation pour une action, pour pouvoir :
* passer un paramètre qui rappelle ce sur quoi on agit dans le template (tel profil, tel user...)
* ajouter un bouton `cancel` (actuellement, une à confirmer peut être annulée uniquement en retournant en arrière via le navigateur)backlogornanovitchornanovitchhttps://forge.tedomum.net/acides/hiboo/-/issues/131Bouton "Se souvenir de moi" ne fonctionne pas avec 2FA2024-01-22T17:24:19ZJae Lo PrestiBouton "Se souvenir de moi" ne fonctionne pas avec 2FALe bouton "Se souvenir de moi" n'a aucun effet quand 2FA est activé.
Pour reproduire:
- Aller `forge.tedomum.net` ce qui me redirige vers `auth.tedomum.net`
- Se connecter en cliquant sur "Se souvenir de moi" et entrer le code 2FA
- Acc...Le bouton "Se souvenir de moi" n'a aucun effet quand 2FA est activé.
Pour reproduire:
- Aller `forge.tedomum.net` ce qui me redirige vers `auth.tedomum.net`
- Se connecter en cliquant sur "Se souvenir de moi" et entrer le code 2FA
- Accéder a la forge
- Fermer son navigateur web
- Attendre une heure ou deux
- Aller sur `forge.tedomum.net` ou `auth.tedomum.net`
- Rien n'est connecté
Peut aussi être reproduit avec un simple login sur `auth.tedomum.net`.
Notes:
Quand j'ai fait l'implémentation originale du "Se souvenir de moi", le bouton fonctionnait bien mais je n'utilisait pas de 2FA (pas encore implémenté à l'époque).
Testé sur Firefox 121.0.1 sans add-ons affectant les cookies ou autres stockages.1.0.0f00wlf00wlhttps://forge.tedomum.net/acides/hiboo/-/issues/132Mettre à jour le README2024-01-24T12:34:42ZJae Lo PrestiMettre à jour le READMEJe pense qu'il serait temps de mettre à jour le README vu qu'il date un peut et redirige vers des liens morts (notamment les `*.test.tedomum.net`).
Tout ce qui concerne le déploiement pourrait être gardé mais reformaté en attendant un m...Je pense qu'il serait temps de mettre à jour le README vu qu'il date un peut et redirige vers des liens morts (notamment les `*.test.tedomum.net`).
Tout ce qui concerne le déploiement pourrait être gardé mais reformaté en attendant un meilleur moyen de documenter tout ca.
Related issues:
- #33
- #1200.2.0https://forge.tedomum.net/acides/hiboo/-/issues/134Uniformiser les routes2024-03-24T14:34:32ZornanovitchUniformiser les routesCes derniers temps, divers sujets à traiter (authentification, dialogue de confirmation, vue de modération...) nous ont conduit avec @f00wl à questionner un certain nombre de routes, qui ne nous semblaient pas toujours cohérentes ou prat...Ces derniers temps, divers sujets à traiter (authentification, dialogue de confirmation, vue de modération...) nous ont conduit avec @f00wl à questionner un certain nombre de routes, qui ne nous semblaient pas toujours cohérentes ou pratiques à manipuler. En dézoomant un peu, j'ai remarqué qu'il n'y avait pas de convention de routage unique, et que plusieurs logiques se sont chevauchées avec le temps. Parmi les « problèmes » qu'on peut identifier dans l'état actuel :
- les collections sont au singulier (`profile`, `user`, `service`)
- les `uuid` sont très souvent en bout de route, mais pas systématiquement, là où une syntaxe `<collection>/<uuid>/<...>` (où est-on / sur quoi lit-on ou fait-on quelque chose) serait envisageable
Une unification systématique avec des conventions de routage ne répondrait pas seulement à un enjeu esthétique, mais permettrait de se rapprocher des bonnes pratiques de type REST, et de rendre plus compréhensive l'exploration du code autant que de l'interface web lors du développement.
Un autre sujet, peut-être moins consensuel, concerne les profiles. Plus je me plonge et replonge dans le code de Hiboo, plus je me convainc qu'en termes de pure logique, `profiles` est une sous-collection de `services`, dans la mesure où un profile ne peut pas exister en dehors d'un service, tandis qu'il peut exister en dehors d'un user (`UNCLAIMED`). Par exemple, je trouve qu'une route `/services/<service_uuid>/profiles` informe mieux que `/profile/list/service/<service_uuid>`.
J'ai bossé dans une branche sur un PoC de ce à quoi pourrait ressembler une alternative (basée sur la branche de !79 histoire de résoudre une limitation de ma proposition pour les profiles) :
Endpoint | Before | After
------------------------------------ | ----------------------------------------------------------- | --------------------------------------------
account.contact | [- /account/contact -] | [+ /account/settings/contact +]
account.home | /account/home | /account/home
account.password | [- /account/auth/password -] | [+ /account/settings/auth/password +]
account.password_reset | /account/auth/password/reset | /account/auth/password/reset
account.profiles | /account/profiles | /account/profiles
account.signin_password | [- /account/signin/password -] | [+ /account/auth/password +]
account.signin_totp | [- /account/signin/totp -] | [+ /account/auth/totp +]
account.signout | [- /account/signout -] | [+ /account/auth/signout +]
account.signup | [- /account/signup -] | [+ /account/auth/signup +]
account.totp | [- /account/auth/totp -] | [+ /account/settings/auth/totp +]
account.totp_disable | [- /account/auth/totp/disable -] | [+ /account/settings/auth/totp/disable +]
account.totp_enable | [- /account/auth/totp/enable -] | [+ /account/settings/auth/totp/enable +]
account.totp_reset | /account/auth/totp/reset | /account/auth/totp/reset
api.profile_email | [- /api/profile/<profile_uuid>/email -] | [+ /api/profiles/<profile_uuid>/email +]
index | / | /
moderation.board | /moderation/ | /moderation/
profile.action | [- /profile/action/<profile_uuid>/<action\> -] | [+ /services/<service_uuid>/profiles/<profile_uuid>/<action\> +]
profile.assign | [- /profile/assign/<profile_uuid> -] | [+ /services/<service_uuid>/profiles/<profile_uuid>/assign +]
profile.cancel_transition | [- /profile/transition/<profile_uuid>/cancel -] | [+ /services/<service_uuid>/profiles/<profile_uuid>/transition/cancel +]
profile.claim | [- /profile/claim/<service_uuid> -] | [+ /services/<service_uuid>/profiles/claim +]
profile.complete_transition | [- /profile/transition/<profile_uuid>/complete -] | [+ /services/<service_uuid>/profiles/<profile_uuid>/transition/complete +]
profile.create | [- /profile/create/<service_uuid> -] | [+ /services/<service_uuid>/profiles/create +]
profile.create_for | [- /profile/create_for/<service_uuid> -] | [+ /services/<service_uuid>/profiles/create-for +]
profile.create_quick | [- /profile/create_quick/<service_uuid> -] | [+ /services/<service_uuid>/profiles/create-quick +]
profile.details | [- /profile/details/<profile_uuid> -] | [+ /services/<service_uuid>/profiles/<profile_uuid> +]
profile.list_for_service | [- /profile/list/service/<service_uuid> -] | [+ /services/<service_uuid>/profiles/ +]
profile.pick | [- /profile/pick/<service_uuid> -] | [+ /services/<service_uuid>/profiles/pick +]
profile.start_transition | [- /profile/transition/<profile_uuid>/<transition_id> -] | [+ /services/<service_uuid>/profiles/<profile_uuid>/transition/<transition_id> +]
profile.unclaimed_export_for_service | [- /profile/unclaimedexport/service/<service_uuid>.csv -] | [+ /services/<service_uuid>/profiles/unclaimed.csv +]
service.action | [- /service/action/<service_uuid>/<action\> -] | [+ /services/<service_uuid>/<action\> +]
service.create | [- /service/create/<application_id> -] | [+ /services/<application_id>/create +]
service.create_select | [- /service/create -] | [+ /services/create +]
service.delete | [- /service/delete/<service_uuid> -] | [+ /services/<service_uuid>/delete +]
service.details | [- /service/details/<service_uuid> -] | [+ /services/<service_uuid> +]
service.edit | [- /service/edit/<service_uuid> -] | [+ /services/<service_uuid>/edit +]
service.edit | [- /service/edit -] | [+ /services/edit +]
service.list | [- /service/list -] | [+ /services/ +]
service.setapp | [- /service/setapp/<service_uuid>/<application_id> -] | [+ /services/setapp/<service_uuid>/<application_id> +]
service.setapp_select | [- /service/setapp/<service_uuid> -] | [+ /services/<service_uuid>/setapp +]
sso.oidc_authorize | /sso/oidc/<service_uuid>/authorize | /sso/oidc/<service_uuid>/authorize
sso.oidc_authorize | /sso/oidc/authorize/<service_uuid> | /sso/oidc/authorize/<service_uuid>
sso.oidc_discovery | /sso/oidc/<service_uuid>/.well-known/openid-configuration | /sso/oidc/<service_uuid>/.well-known/openid-configuration
sso.oidc_issuer | /sso/oidc/<service_uuid> | /sso/oidc/<service_uuid>
sso.oidc_jwks | /sso/oidc/<service_uuid>/jwks | /sso/oidc/<service_uuid>/jwks
sso.oidc_token | /sso/oidc/<service_uuid>/token | /sso/oidc/<service_uuid>/token
sso.oidc_token | /sso/oidc/token/<service_uuid> | /sso/oidc/token/<service_uuid>
sso.oidc_userinfo | /sso/oidc/<service_uuid>/userinfo | /sso/oidc/<service_uuid>/userinfo
sso.oidc_userinfo | /sso/oidc/userinfo/<service_uuid> | /sso/oidc/userinfo/<service_uuid>
sso.saml_metadata | /sso/saml/metadata/<service_uuid>.xml | /sso/saml/metadata/<service_uuid>.xml
sso.saml_redirect | /sso/saml/redirect/<service_uuid> | /sso/saml/redirect/<service_uuid>
static | /static/<path:filename> | /static/<path:filename>
user.contact_check | [- /user/contact/check/<user_uuid> -] | [+ /users/<user_uuid>/contact-checking +]
user.details | [- /user/details/<user_uuid> -] | [+ /users/<user_uuid> +]
user.invite | [- /user/invite -] | [+ /users/invitation +]
user.list | [- /user/list -] | [+ /users/ +]
user.password_reset | [- /user/auth/password/reset/<user_uuid> -] | [+ /users/<user_uuid>/auth/password/reset +]
user.pick | [- /user/pick -] | [+ /users/pick +]
user.totp_reset | [- /user/auth/totp/reset/<user_uuid> -] | [+ /users/<user_uuid>/auth/totp/reset +]backlog