Vous êtes sur le wiki de développement du projet SLIS

Synchronisation Active Directory

La synchronisation avec l'Active Directory permet au serveur LDAP du LCS de déléguer le travail d'authentification des connexions au serveur Active Directory.

Pré-requis

Configuration

  • Le SLIS doit autoriser l'accès au serveur Active Directory depuis le LCS. Il y a un schéma de règle "Consulter un annuaire ldap(s)" que l'on peut employer. Le serveur AD est habituellement 172.16.0.11.
  • L'annuaire AD doit permettre les accès SSL (ldaps). Suivre les instructions de cette page web pour cela: http://www.linuxmail.info/enable-ldap-ssl-active-directory/ C'est nécessaire afin de pouvoir changer les mots de passe à distance (cette opération n'est possible que sur une connexion SSL).
  • Il faut disposer d'un login/mot de passe pour un compte sur l'AD qui a les droits de lecture sur l'annuaire. Ce compte permet d'identifier l'entrée de l'utilisateur (DN) à partir de son login (sAMAccountName). Ce compte doit avoir le droit de réinitialiser l'attribut unicodePwd si l'on veut que les profs puissent réinitialiser les mots de passe des comptes des utilisateurs. Autrement seuls les utilisateurs peuvent changer leur mot de passe à condition qu'ils disposent du droit "Modifier le mot de passe" ou "Rénitialiser le mot de passe" (droit qu'il convient de positionner pour le groupe "SELF").

Installation

Il faut les paquets suivants sur le LCS:

  • ldapedu-server (>= 4.2.1~1), ou autre version avec backport des fonctionnalités
  • lcs-web (>= 2.4.8~3), ou autre version avec backport des fonctionnalités
  • lcs-imap (>= 2.4.8~1), ou autre version avec backport des fonctionnalités

Les changements ont été backportés dans lcs.git maintenu par le SLIS et sont disponibles dans les branches "sync-ad". Ils n'ont pas été testés dans ces versions par contre. Les commits du dépôt SVN de LCS qui ont été backportés sont:

  • r3646: lcs-imap bugfix to work with Active Directory authentication
  • r3647: lcs-preinstall: add parameters related to active directory integration
  • r3666: lcs-web: add support for active directory delegation when changing password
  • r3667: add_user(): setup userPassword properly according to ad_auth_enable
  • r3668: www/Annu/includes/ldap.inc.php: add functions to disable/enable authentication on AD
  • r3669: www/Annu/delegate_auth_ad.php: new page to manage remote authentication
  • r3670: www/Annu/group.php: add links to manage delegation of authentication
  • r3671: www/Annu/people.php: add links to manage remote authentication
  • r3672: Add interface to manage the Active Directory synchronization
  • r3673: Changelog entry (not really needed)
  • r3674: Implement uidPolicy=20 and 21 for compatiblity with the HARP directory

Pour faire un backport de ldapedu-server, les changements importants sont dans les commits suivants du dépôt SVN de SLIS:

  • r6670
  • r6671
  • r6931
  • r6948

Usage

Le LCS doit être configuré avec une uid_policy de 20 (cas HARP avec mLogin=2) ou 21 (cas HARP avec mLogin=4) afin que l'import SCONET génère les mêmes logins.

Pour activer l'authentification déportée, il y a une page dédiée dans la section "Administration", boîte "Annuaire", lien "Synchronisation Active Directory". Une fois activée au niveau système il reste à indiquer les comptes utilisateurs qui doivent s'authentifier sur l'AD, pour cela on utilise l'application "Annuaire". Sur la page d'un groupe ou la page d'un utilisateur, il y a des liens "Activer l'authentification déportée". Le mieux est de le faire pour les groupes "Élèves" et "Profs" si l'on veut basculer tout le monde.

Par contre la désactivation de la synchronisation active directory modifiera instantanément tous les comptes pour qu'ils utilisent une authenfication locale. Les mots de passe seront réinitialisés à la date de naissance au cours de ce processus.

Si la synchronisation est activée, les nouveaux utilisateurs créés (ou importés) seront configurés par défaut avec l'authentification déportée.

Ressources et liens utiles

TODO / Reste à faire

Traitement par lot sur l'annuaire LDAP

Objectifs: activer/désactiver facilement des ensembles de comptes

  • Pour activer/désactiver des comptes sur LCS (ajout "!" devant le mot de passe)
  • Possible de le faire sur l'ensemble retourné par un "résultat de recherche"
  • Doit conserver le mot de passe après désactivation puis réactivation

Analyse: La désactivation du compte LDAP se fait en préfixant l'attribut userPassword par "!". La désactivation du compte Samba se fait en modifiant l'attribut sambaAcctFlags pour y rajouter un "D" (http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/passdb.html#TOSHARG-acctflags).

Description détaillée:

  • lcs-web/www/Annu/group.php: lien pour activer/désactiver compte
  • lcs-web/www/Annu/people.php:
    • lien pour activer/désactiver compte
    • afficher si le compte est désactivé ou pas
  • lcs-web/www/Annu/includes/ldap.inc.php: fonction pour activer/désactiver un compte.
  • lcs-web/www/Annu/mod_account_status.php:
    • uid=<> ⇒ agit sur un compte unique
    • groupcn=<> ⇒ agit sur les membres élèves d'un groupe
    • action: enable / disable
    • verbose: affiche plus de détails sur ce qui est fait

Modifications de l'import SCONET sur le LCS

Objectif: Modifier l'import LCS de SCONet pour supporter un uidpolicy isofonctionnel à HARP

  • Possibilité de les importer activés ou désactivés

Description détaillée de ce qu'il y a à faire:

  • lcs-web/www/Annu/includes/crob_ldap_functions.php (remplace_accents): gérer ø → o, Ø → O, supprimer le Ä en doublon
  • lcs-web/lcs/scripts/import_comptes.php: normaliser le filtrage des caractères autorisés dans les noms et prénoms.
  • lcs-web/www/Annu/import_sconet.php: ajout d'une option pour définir si les comptes élèves nouvellement créés au cours de l'import sont activés ou pas, et ajout d'une option pour importer le personnel non-enseignants aussi (FONCTION != ENS).
  • lcs-web/lcs/scripts/import_comptes.php: implémentation des 2 options ci-dessus.

Rapprochement des comptes entre entre HARP et LCS

Objectifs:

  • S'assurer que tous les logins correspondent entre HARP/AD et LCS
  • Corriger les quelques différences subsistant suite à des manipulations non-conformes

Analyse:

HARP va être modifié pour exporter les même informations que SLIS dans l'attribut employeeNumber des comptes AD.

Travail à faire:

  • Nouvelle page PHP à intégrer dans l'application "Annuaire"
  • Ne mettre le lien que si le paramètre LCS ad_server est non-vide.
  • Pour chaque compte disponible:
    • si employeeNumber est disponible, voir dans AD si compte correspondant existe
      • si oui et login corresponde, next
      • si oui et login différent, se noter le renommage à prévoir (passer par un identifiant intermédiaire unique torename-X-<orig>), puis next
    • sinon faire une recherche sur le login et indiquer les différences trouvées dans nom/prémom/date de naissance afin de faciliter une correction manuelle par l'admin
  • A la fin: renommer les comptes en batch si aucune collision n'est détectée.

Rédaction documentation

Documenter comment l'import doit être fait du côté HARP ainsi que du côté LCS.

NOTE: L'import côté HARP doit être modifié pour ne supprimer les comptes inutiles qu'après l'import des nouveaux comptes de l'année (cf mail 4C86569F.7030803@ac-grenoble.fr de Olivier Grasdepot).


QR Code
QR Code doc:sync-ad (generated for current page)