Authentification de macOS avec OpenLDAP

Cet article explique comment s’authentifier avec un client macOS en utilisant un annuaire OpenLDAP. Les utilisateurs présents dans l’annuaire pourront ainsi se connecter sur les postes macOS. Les actions et les tests ont été réalisés sur Sierra (10.12).

Avant de débuter, votre annuaire LDAP doit être compatible avec la RFC2307 (ce qui doit être le cas si vous utilisez les schémas standards). Cela vous évitera de remapper les attributs dans l’interface dédiée, ce qui peut vite devenir une tâche fastidieuse et ennuyeuse…

Nous admettons également que vous pouvez déjà vous authentifier avec succès sur cet annuaire.

Pour commencer, lancez ‘Préférences Système‘, en cliquant sur la pomme, en haut à gauche de l’écran. Ensuite, sélectionnez ‘Utilisateurs et groupes‘, au bas de l’écran, suivi de ‘Options‘ et ‘Rejoindre…‘. Le mot de passe administrateur sera requis.

Cliquez sur ‘Ouvrir Utilitaire d’annuaire…‘. Avant de pouvoir modifier les paramètres, vous devrez saisir une nouvelle fois le mot de passe administrateur. Choisir ‘LDAPv3‘ dans l’onglet ‘Services‘ et cliquez sur le crayon:

Affichez les options avancées et ajoutez un serveur en cliquant sur ‘Nouveau…‘. Vous devez donc définir l’adresse du serveur LDAP. Dans notre cas, nous utiliserons ‘ldap.foo.fr‘, en guise d’exemple. Je vous conseille fortement de passer en mode manuel pour éviter des problèmes éventuels. En effet, lorsque SSL est coché, le port utilisé reste le 389 et peut donc faire échouer la connexion (j’ai eu ce comportement).

Vous pouvez maintenant nommer la configuration. Sélectionnez le serveur et cliquez sur ‘Modifier…‘. Vous obtenez une nouvelle fenêtre et vous êtes placé dans l’onglet ‘Connexion‘. Le nom de la configuration et l’adresse du serveur sont déjà remplis. Si SSL est requis, cochez la case et pensez a changer le port (ce n’est pas forcement nécessaire dans votre cas). Si le port n’est pas bon, la connexion échouera.

Choisissez le second onglet ‘Recherche et mappages‘ et modifiez le mappage en RFC2307. Vous devrez définir la base de recherche, ici
ou=people,dc=foo,dc=fr‘:

Il faudra peut-être aussi modifier la base de recherche pour les groupes:

Si la connexion à l’annuaire nécessite une authentification, vous devrez effectuer ces réglages dans l’onglet ‘Securité‘. Je n’aborderai pas ce point dans l’article.

Dès maintenant, vous pouvez vérifier que vous accédez aux entrées du LDAP. Pour ce faire, sélectionnez ‘Editeur de répertoire‘ dans ‘Utilitaire d’annuaire‘. Après avoir choisi le nœud correspondant au LDAP, qui doit commencer par /LDAPv3/, suivi de l’adresse précédemment défini (dans notre cas ‘/LDAPv3/ldap.foo.fr‘), naviguez dans les ‘OU‘ via la liste déroulante ‘Présentation‘. Si vous n’avez pas fait d’erreur, les entrées doivent être correctement affichées.

Nous devons maintenant autoriser la connexion des utilisateurs présents dans le LDAP, sur notre client macOS. Toujours dans’Utilitaire d’annuaire‘, choisissez ‘Règles de recherche‘ et l’onglet ‘Authentification‘. Au niveau de la liste déroulante, il est nécessaire d’afficher ‘Chemin personnalisé‘. Cliquez sur ‘+‘, ajoutez votre annuaire, suivi de ‘Appliquer‘:

Une fois que ces étapes sont terminées, revenez dans ‘Utilisateurs et
groupes‘ (cf ‘Préférences Système‘) et ‘Options‘. Un nouveau réglage est disponible. Il permet d’autoriser ou non les utilisateurs réseau à se connecter. Il est aussi possible d’autoriser que certaines personnes du LDAP. Vous noterez le petit cercle vert, indiquant que le client parvient bien à se connecter au serveur. Pour pouvoir taper le login du compte distant, ainsi que le mot de passe, il est obligatoire de cocher ‘Ouverture de session par: nom et mot de passe‘:

On pourrait penser que c’est terminé, mais ce n’est pas le cas. macOS
semble avoir quelques difficultés (pour rester poli) avec l’authentification SASL sur OpenLDAP. Par conséquent, il faut désactiver tous les méchanismes SASL supporté par votre beau LDAP, dans la configuration du client. On effectuera cela via l’application ‘Terminal‘.

La commande suivante désactive le mechanisme CRAM-MD5 pour le serveur ‘ldap.foo.fr‘:

/usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string CRAM-MD5" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/ldap.foo.fr.plist

Dans mon cas, sachant que l’annuaire supporte CRAM-MD5, DIGEST-MD5, LOGIN, NTLM et PLAIN, je vais utiliser un simple for avec les droits root:

1
2
3
for m in CRAM-MD5 DIGEST-MD5 LOGIN NTLM PLAIN; do
    /usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string $m" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/ldap.foo.fr.plist
done

Pour finaliser tout ca, je vous conseille de redémarrer le poste client. Dès maintenant, il est possible de se connecter sur le poste macOS avec un compte LDAP. Les données seront stockées localement.

Procédez de la même manière pour ajouter d’autres annuaires LDAP à votre client.

Autre point: contrairement à ce qui est souvent mentionné dans les limbes d’Internet, ajouter le schéma apple.ldif ou samba.ldif n’est ABSOLUMENT PAS requis. Il est parfaitement possible de faire fonctionner l’authentification sans ces schémas.

Dans le prochain article, j’expliquerai comment monter automatiquement le répertoire personnel via NFS lors de la connexion.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *