Architecture
Architecture applicative
Hiboo est une application monolotithique, il ne possède pas de système d’extension ou de plugin. Il embarque donc l’ensemble des fonctionnalités, pour tous les protocoles supportés et tous les logiciels supportés, sans possibilité de restreindre ces fonctionnalités.
Ce parti pris alourdit légèrement l’application dans son ensemble mais facilite sa maintenance à l’échelle du projet, comme le nombre de contributeurs ne permet pas de maintenir un écosystème dynamique avec des interfaces d’extensions.
Concepts
Service et application
Dans hiboo, un « service » représente un service tel qu’il est mis à disposition par l’hébergeur employant hiboo. Le service hiboo est confondu avec la notion de Service Provider lorsqu’il emploi l’authentification SAML2 ou de client lorsqu’il emploie l’authentification OpenID Connect.
Une application est un modèle de service implémentant les spécificités des logiciels supportés par hiboo. Il existe ainsi des applications génériques, définissant la configuration d’un service SAML2 ou OpenID Connect sans présager du logiciel employé et laissant libre l’administrateur ; et des applications spécifiques (par exemple Gitlab, Mastodon, etc.) dont l’implémentation précise l’interaction entre hiboo et le logiciel en question.
Une application peut implémenter les spécificité de l’authentification sur le logiciel, du cycle de vie des profils utilisateur, mais également des fonctions à destination des utilisateurs ou administrateurs. En outre, une application peut embarquer de la documentation spécifique pour faciliter l’intégration de hiboo avec le logiciel visé.
Chaque service précise quelle application il emploie et la configuration spécifique éventuellement associée. Un service est donc en quelque sorte une instance d’application. Hiboo étant conçu et distribué de façon monlithique, les applications sont codées en dur et non stockées dans la base de données, tandis que chaque service dispose d’une entrée spécifique en base de données.
Compte et profil
Dans hiboo, un utilisateur dispose d’un unique « compte », qui lui permet de s’authentifier sur hiboo. Ce compte est caractérisé par un nom d’utilisateur et une configuration d’authentification (hiboo support actuellement uniquement une authentification par mot-de-passe).
Un utilisateur dispose également de « profils » par service, qui lui permettent de s’authentifier auprès du service. Chaque profil est caractérisé par un nom de profil, transmis à l’application, qui n’est pas nécessairement identique au nom d’utilisateur. En fonction de la configuration du service, un utilisateur peut disposer de multiples profils sur un même service, auquel cas il doit choisir à chaque authentificaiton le profil à employer.
Lorsque la configuration le permet, à la première connexion d’un utilisateur à un service, hiboo propose donc la création d’un profil, en employant un nom de profil si possible identique au nom d’utilisateur.
Etats
Les profils dans hiboo disposent d’un état (status
), soumis à une machine à état décrite sur la page cycles de vie. Le comportement des états d’un profil dépendent de la logique générale de la machine à état et de la logique spécifique de l’application employée par le service auquel le profil est rattaché.