Stage 2 : Vikunja

DGA MI - Pôle Sup de La Salle

🌍 Introduction

L'activation du protocole LDAP permet de centraliser la gestion des utilisateurs de la plateforme. Une fois configuré, les collaborateurs peuvent se connecter à Vikunja avec leurs identifiants réseau habituels, sans avoir à créer de compte local.

⚙️ 1. Principe de fonctionnement

Lorsqu'un utilisateur tente de se connecter, le processus suivant s'enclenche :

  1. Vikunja contacte le serveur LDAP via un compte "lecteur" (Bind User).
  2. Il cherche l'utilisateur dans l'annuaire via son identifiant de connexion.
  3. Si le mot de passe est correct, Vikunja crée ou met à jour le profil local (nom, email).
  4. Si la synchronisation des groupes est activée, l'utilisateur est automatiquement ajouté aux Équipes Vikunja correspondantes.

Preuve d'authentification : Différenciation des comptes Locaux et LDAP

Comptes Local vs LDAP

Cette vérification en ligne de commande démontre la création automatique du profil. On observe distinctement la différence entre l'utilisateur "yann" créé localement (Issuer: local) et "y.coudrais" importé depuis l'Active Directory (Issuer: ldap).

👥 2. Synchronisation des Groupes (Équipes)

Une fonctionnalité avancée de l'intégration LDAP de Vikunja est la gestion des équipes.

Preuve de synchronisation : Active Directory vers Vikunja

Groupe AD

1. Active Directory : Groupe avec ses membres

Equipe Vikunja

2. Vikunja : Équipe correspondante synchronisée

Grâce au filtre LDAP, les membres ajoutés dans le groupe de sécurité AD sont automatiquement intégrés dans l'équipe de l'application Vikunja lors de leur connexion.

🔧 3. Paramètres détaillés (config.yml)

A. Connexion et Sécurité

Paramètre Description
enabled Active ou désactive le module LDAP (true / false).
host Adresse IP ou FQDN du serveur (ex: pc.active.directory).
port Port de connexion (389 par défaut).
usetls À mettre sur false si vous n'utilisez pas de certificat SSL sur le port 389.

B. Compte de liaison (Bind User)

  • binddn : Le chemin complet du compte de service (ex: CN=admsvc-vikunja,...).
  • bindpassword : Le mot de passe associé à ce compte.
  • basedn : La racine de recherche (ex: DC=domaine,DC=local).

C. Filtres et Attributs

  • userfilter : La règle pour trouver l'utilisateur. Pour AD, on utilise (&(objectClass=user)(sAMAccountName=%[1]s)).
  • username : L'identifiant (souvent sAMAccountName ou uid).
  • mail : L'attribut email de l'annuaire (Indispensable).

📄 4. Exemple de configuration (Active Directory)

Voici le bloc de configuration YAML complet intégré dans le fichier config.yml :

auth:
  ldap:
    enabled: true
    host: pc.active.directory
    port: 389
    usetls: false 
    verifytls: false 
    binddn: "CN=admsvc-vikunja,OU=Utilisateurs,DC=active,DC=directory"
    bindpassword: mdp_svc-compte
    basedn: "DC=active,DC=directory"
    userfilter: "(&(objectClass=user)(sAMAccountName=%[1]s))"
    attribute:
      username: sAMAccountName
      mail: mail
    groupsyncenabled: true
    groupsyncfilter: "(objectClass=group)"

Le compte de service (Bind User) dans l'Active Directory

Compte de service AD

Ce compte dédié dispose des droits de lecture sur l'annuaire pour permettre à l'application de vérifier les identifiants.

💡 5. Conseils et Bonnes Pratiques

⚠️ L'email est critique

Si un utilisateur LDAP n'a pas d'adresse mail renseignée dans l'annuaire Active Directory, la connexion échouera, car Vikunja en exige une obligatoirement dans sa base de données.

podman restart vikunja