Authentification et autorisation

Documentation technique

Mise en place

L’authentification sur l’infrastructure d’ImmaeEu est basée sur un annuaire LDAP. Cet annuaire gère également les droits d’accès et les niveaux d’accès (en fonction du support) aux différents services.

Annuaire statique

L’annuaire LDAP est en train d’évoluer pour être rendu « statique » : les informations contenues dans l’annuaire, à l’exception du mot de passe et de la liste des clés SSH (modifiables par l’utilisateur) seront générées de façon statique par la configuration NixOS. Les mots de passe et clés ssh quant à eux seront stockés (hashés) dans la base de données PostgreSQL.

Chemin d’authentification

Lorsqu’une personne souhaite s’authentifier sur une application, le chemin d’authentification est généralement le suivant :

  • Le service se connecte à l’annuaire avec un compte LDAP spécifique au service (dont les accès sont strictement limités à ceux nécessaires au service)

  • Une fois loggé, le service peut vérifier l’existence de l’utilisateur (ou lister les utilisateurs ayant accès au service)

  • Une seconde connexion est faite avec le mot de passe et le login soumis par l’utilisateur pour l’authentifier.

  • Pour authentifier l’utilisateur du côté LDAP:

    • Soit le mot de passe de l’utilisateur est stocké dans la base de données, auquel cas OpenLDAP peut vérifier directement le mot de passe

    • Soit le mot de passe est remplacé par une authentification SASL, auquel cas OpenLDAP interroge le service saslauthd (via la configuration dans /etc/sasl2/slapd.conf), qui va à son tour faire une requête PostgreSQL pour vérifier l’identité de l’utilisateur (via pam : /etc/pam.d/ldap)

  • Une fois l’utilisateur authentifié, le service peut récupérer si besoin les informations de l’utilisateur (e-mail, nom, prénom, login)