ldaps et Mac OS X Server

vboudon

Membre confirmé
26 Novembre 2006
17
0
Je voudrais installer un intranet sur une machine sous OS X server, avec autentification via l'annuaire de mon université, i.e. via un serveur ldap.

J'ai tout d'abord réussi à compiler et installer mod_ldap. Ca marche bien. Seulement, ce module ne gère pas la connexion sécurisée en ldaps.

En fouilland un peu, j'ai vu que mod_auth_ldap ou auth_ldap devraient répondre à la question. Seulement, pour les compiler, c'est la galère. Cela requiert un ldap sdk qui n'est pas présent.

Quelqu'un a-t-il une idée pour m'expliquer comment faire ?

Merci par avance !
 
Oui, open ldap est intégré, mais pas le ldap SDK et les librairies et headers qui vont avec.
Or, il les faut pour compiles auth_ldap. J'ai réussi à trouver les sources de la version d'open ldap qui est dans Mac OS X, parce qu'en la compilant, je pensais obtenir les trucs qui manquent. Mais ça se plante, à cause d'un problème avec Berkeley DB ... Bref, c'est le truc sans fin et ça coince.

Pourtant, auth_ldap 1.6.1 serait bien la solution au problème ... Si quelqu'un arrive à le compiler, je suis preneur de la solution !!!
 
Ca ne marche pas parce que mon serveur est un Mac Intel. le module ne se charge pas.

Tu l'as eu où ? Tu sais comment le compiler ?
 
Tu installes les outils de dev, tu charges les sources, via le terminal dans le répertoire auth_ldap :
./configure
make

et voilà tu as le fichier auth_ldap.so.
 
Oui, mais ... Pour utiliser ldaps, il faut faire ./configure --with-ssl. Et c'est là que ça coince.

Comme dit ici :

http://www.rudedog.org/auth_ldap/1.6/auth_ldap.html

il faut un sdk, openldap sdk ou netscape directory sdk. Et ça, ce n'est pas présent. Netscape directory sdk n'existe plus, il est remplacé par Mozilla directory sdk qui n'a pas l'air de marcher (j'ai essayé en vain, et en plus c'est très compliqué à compiler). Quant à Open ldap sdk, on le trouve (y compris la version correspondant à celle d'openldap de Mac OS X server, qui est un peu ancienne d'ailleurs), mais ça ne compile pas non plus. Ca rale à propos d'un incompatibilité de Berkeley DB ... Et j'en suis là.
 
Bon, j'ai très légèrement progressé en contactant les auteurs de auth_ldap et mod_auth_ldap. Sauf qu'ils ne connaissent pas vraiment le Mac, mais bon ...

Ce qu'il ressort, c'est que pour compiler ces modules avec support ssl (pour faire du ldaps), il faut (comme dit avant) utiliser un ldap sdk et que celui de mozilla n'est pas la bonne idée. Il vaut mieux utiliser openldap. Bien. Mais le openldap présent dans OS X Server est incomplet car il ne contient pas le SDK. Soit. On peut recompiler openldap. Mais en faisant ça, je tombe sur un autre problème : incompatible avec Berkeley DB.

Aussi sec, j'ai donc chargé la source de Berkeley DB. Ca se compile sans pb. Mais je n'ai pas osé aller jusqu'au make install. Car Mac OS X Server a l'air de se reposer beaucoup sur Berkeley DB et la version installée a l'air modifiée par Apple (d'après ce que je vois dans les fichiers comme db.h). Bref, j'ai peur de casser mon système en réinstallant Berkeley DB.

Quelqu'un aurait-il une opinion là-dessus ?
 
Tu peux travailler dans ton home, pas la peine de modifier les répertoires systèmes.
Crée dans ton home un répertoire lib que tu ajoutes à ton LD_LIBRARY_PATH, et met tes librairies dedans.
 
Oui ... mais non ! Je ne sais pas comment dire au configure d'openldap que le Berkeley DB à utiliser est celui que j'ai dans mon compte et pas celui du système ...
 
Il suffit de mettre les chemins dans LD_LIBRARY_PATH dans le bon ordre. Il faudrait aussi voir les options de configure.
 
Désolé, je rame toujours !

J'ai pu installer Berkeley DB dans mon compte à l'aide de l'option --prefix du configure. J'ai donc un bin, un lib, un include avec tous les fichiers de Berkeley DB dans mon compte utilisateur. Ca, c'est OK.

Mais ça coince toujours avec le configure de openldap. Même en définissant LD_LIBRARY_PATH ou DYLD_LIBRARY_PATH, en ajoutant mon bin local dans le PATH, etc. J'ai toujours invariablement :

.....
checking for db.h... yes
checking for Berkeley DB major version... 1
checking for Berkeley DB minor version... 0
checking for Berkeley DB link (-ldb1)... no
checking for Berkeley DB link (-ldb-1)... no
checking for Berkeley DB link (default)... yes
checking for Berkeley DB version match... yes
checking for Berkeley DB thread support... no
checking Berkeley DB version for BDB/HDB backends... no
configure: error: BDB/HDB: BerkeleyDB version incompatible

Or le Berkeley DB que j'ai installé est la version 4, pas 1, donc il n'est pas pris en compte. Je sèche. En fait, je ne sais pas ce que configure fait exactement quand il fait "checking for Berkeley DB". Le config.log n'est pas clair ... (cf. fichier attaché).

Quelqu'un a-t-il déjà compile openldap ???
 
Mais ça coince toujours avec le configure de openldap. Même en définissant LD_LIBRARY_PATH ou DYLD_LIBRARY_PATH, en ajoutant mon bin local dans le PATH, etc. J'ai toujours invariablement :
Les compilateurs (donc je pense aussi le programme configure) lisent les PATH dans l'ordre et s'arrêtent à la première occurrence de la librairie recherchée. Donc il faut que les chemins soient dans un ordre bien précis si tu veux parcourir un répertoire avant un autre.
Vérifie que tu as bien placé ton "bin" avant ceux du système (/usr/bin et /usr/local/bin).
 
Oui, c'est bien le cas :

echo $PATH

/Users/admin/Documents/misc/BDB/bin:~/bin/i386-apple-darwin:/Users/admin/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin

Le premier élemént du PATH est celui où j'ai installé mon BDB 4. Mais ça ne change rien.
 
Je comprends maintenant que le problème vient des include. La vérification de Berkeley DB se fait dans db.h. Et c'est toujours celui qui est dans /usr/include qui est pris en compte. Comment puis-je faire comprendre au compile de chercher les include dans le dossier include du BDB que j'ai installé dans mon compte ?
 
Eurêka ! Il fallait définit la variable d'environnement CFLAGS comme

setenv CFLAGS -I<include directory>

et ça marche. Bon, mon openldap se compile. Je vais retourner voir auth_ldap.
 
Eurêka ! Il fallait définit la variable d'environnement CFLAGS comme

setenv CFLAGS -I<include directory>
Cet variable aurait du être définie dans le makefile généré. Y'aurait-i' pas comme un bug dans configure. :siffle: Ou bien est-ce précisé dans la doc ?