Aller au contenu principal

Authentification

Semaphore dispose de trois façons d'établir l'identité d'une personne. Elles sont indépendantes et peuvent toutes être activées en même temps : l'écran de connexion peut donc proposer un formulaire de mot de passe, une connexion à l'annuaire et un bouton par fournisseur d'identité.

MéthodeQui vérifie le mot de passeÀ utiliser quand
Comptes locauxSemaphore, à partir de sa propre base de donnéesVous n'avez pas d'annuaire, ou vous avez besoin d'un administrateur de secours.
LDAP et Active DirectoryVotre serveur d'annuaireLes personnes existent déjà dans LDAP ou AD et vous souhaitez un seul jeu d'identifiants.
OpenID ConnectVotre fournisseur d'identitéVous disposez d'une authentification unique : Keycloak, Okta, Entra ID, Google, GitHub et d'autres.

L'authentification répond uniquement à la question de savoir qui est l'utilisateur. Ce qu'il a le droit de faire est décidé séparément, par son rôle serveur et par son rôle dans chaque projet — voir Équipes.

Comment un enregistrement utilisateur est créé

Toute personne qui se connecte possède une ligne dans la base de données de Semaphore, quelle que soit la méthode utilisée. Un compte local est créé par un administrateur ou par semaphore user add. Un compte LDAP ou OIDC est créé à la première connexion réussie, et Semaphore enregistre à côté une identité externe : l'identifiant du fournisseur, plus l'identifiant utilisateur renvoyé par ce fournisseur.

C'est cette identité externe qui sert de correspondance lors des connexions suivantes, ce qui signifie que renommer quelqu'un dans l'annuaire ne crée pas un deuxième compte. Ce qui demande de l'attention, c'est la première connexion d'un utilisateur existant, lorsque aucune identité externe n'existe encore. L'option external_auth_email_matching détermine ce qui se passe alors :

ValeurComportement
auto (par défaut)Lier par e-mail, mais uniquement pour les utilisateurs externes qui n'ont pas encore d'identité. Cela reprend une seule fois les comptes créés avant la 2.20, et rien d'autre.
alwaysLier par e-mail pour tout utilisateur externe. À utiliser lorsqu'une même personne se connecte via plusieurs fournisseurs.
neverNe jamais lier par e-mail ; les identités sont mises en correspondance strictement par identifiant de fournisseur.

Les comptes locaux avec mot de passe ne sont jamais mis en correspondance par e-mail, quel que soit le mode. Sinon, un fournisseur OIDC qui laisse un utilisateur choisir sa propre adresse e-mail pourrait servir à s'emparer du compte d'un administrateur.

attention

L'identifiant du fournisseur — la clé dans oidc_providers ou ldap_providers — fait partie de chaque identité enregistrée. Le renommer rend orphelines les identités qui y font référence, et ces utilisateurs obtiennent de nouveaux comptes vides à leur prochaine connexion. Choisissez-le une bonne fois pour toutes.

Combiner les méthodes

Une configuration réaliste active l'authentification unique pour les utilisateurs et conserve un administrateur local pour le jour où le fournisseur d'identité est injoignable :

  1. Configurez le fournisseur et vérifiez qu'un utilisateur réel peut se connecter avec.
  2. Attribuez à cet utilisateur les rôles dont il a besoin.
  3. Conservez un compte d'administrateur local avec un mot de passe fort et TOTP activé.
  4. Définissez password_login_disable pour empêcher tous les autres d'utiliser des mots de passe.

Respectez cet ordre. Définir password_login_disable avant l'étape 1 fonctionne exactement comme annoncé et vous prive de l'accès à votre propre serveur.

Dans cette section

PageContenu
Comptes locauxMots de passe, TOTP, codes à usage unique par e-mail, durée de session et désactivation de la connexion par mot de passe.
LDAP et Active DirectoryLiaison (bind) à un annuaire, filtres de recherche, correspondances d'attributs et TLS.
OpenID ConnectConfiguration du fournisseur, expressions de claims, connexion initiée par l'IdP et douze exemples de fournisseurs détaillés.

Par où commencer

Une nouvelle installation dispose déjà de l'administrateur local créé pendant la configuration initiale : commencez donc par les Comptes locaux pour le sécuriser, puis ajoutez OpenID Connect ou LDAP pour tous les autres.