Sono riuscito a far funzionare l'autenticazione LDAP-SASL usando il meccanismo DIGEST-MD5. Per ottenere questo, ho seguito rigorosamente i passi elencati sotto:
Scaricato SleepyCat 4.1.25, compilato e costruito manualmente. Dopo averlo scaricato, ho seguito le istruzioni elencate sul file doc/install.html sotto la directory in cui ho disimballato il pacchetto del tar.gz.
Dopo il disimballaggio potete sperimentare il consiglio dato:
root@rdnt03:/usr/local/db-4.1.25/build_unix#../dist/configure root@rdnt03:/usr/local/db-4.1.25/build_unix#make root@rdnt03:/usr/local/db-4.1.25/build_unix#make install
Scaricato Cyrus SASL 2.1.12, disimballando e seguendo le istruzioni elencate sul documento doc/install.html, sotto la directoryt in cui ho disimballato il file del tar.gz. a questo punto è necessaria un po’ di attenzione, dovete far funzionare lo script di configurazione usando alcuni parametri del env:
root@rdnt03:/usr/local/cyrus-sasl-2.1.12#env CPPFLAGS="-I/usr/local/BerkeleyDB.4.1/include" LDFLAGS="-L/usr/local/BerkeleyDB.4.1/lib" ./configure
I parametri ambientali CPPFLAGS e LDFLAGS mirerebbero rispettivamente alle directori include e lib dove è stato installato berkeley BDB.
A questo punto potete far funzionare ciò che vi è stato suggerito:
root@rdnt03:/usr/local/cyrus-sasl-2.1.12#make root@rdnt03:/usr/local/cyrus-sasl-2.1.12#make install root@rdnt03:/usr/local/cyrus-sasl-2.1.12#ln -s /usr/local/lib/sasl2 /usr/lib/sasl2
Per concludere, ho installato OpenLDAP 2.1.16 usandole stesse procedure elencate su questo documento, e facendo funzionare lo script di configurazione nello stesso modo della SASL configuration:
root@rdnt03:/usr/local/openldap-2.1.16#env CPPFLAGS="-I/usr/local/BerkeleyDB.4.1/include" LDFLAGS="-L/usr/local/BerkeleyDB.4.1/lib" ./configure
Dopo questo, ho attuato il suggerimento:
root@rdnt03:/usr/local/openldap-2.1.16#make depend root@rdnt03:/usr/local/openldap-2.1.16#make root@rdnt03:/usr/local/openldap-2.1.16#make install
Successivamente, ho creato l'user database di SASL:
root@rdnt03:~# saslpasswd2 -c admin
Sarete richiamati per inserire una password. Ricordarsi che l'username non dovrebbe essere un DN (nome distinto). Inoltre ricordarsi di usare la stessa password di administrator sull'albero della directory.
Ora, dovreste regolare la direttiva sasl-regexp nel file slapd.conf prima di far partire il daemon slapd e di verificare l'autenticazione. Il mio file slapd.conf risiede in /usr/local/etc/openldap:
sasl-regexp uid=(.*),cn=rdnt03,cn=DIGEST-MD5,cn=auth uid=$1,ou=People,o=Ever
Questo parametro è nel formato di:
uid=<username>,cn=<realm>,cn=<mech>,cn=auth
Lo username è preso da sasl ed inserito nella stringa di ricerca di ldap nella posizione $1. Il proprio regno si presuppone essere il proprio FQDN (Fully Qualified Domain Name), ma in alcuni casi non è così, come nel mio. Si scopra che cosa è il proprio regno:
root@rdnt03:~# sasldblistusers2 admin@rdnt03: userPassword admin@rdnt03: cmusaslsecretOTP
Nel mio caso, rdnt03 è indicato come il regno. Se esso è il proprio FQDN non bisognerebbe avere problemi. Io uso il seguente file LDIF:
dn: o=Ever
o: Ever
description: Organization Root
objectClass: top
objectClass: organization
dn: ou=Staff, o=Ever
ou: Staff
description: These are privileged users that can interact with Organization products
objectClass: top
objectClass: organizationalUnit
dn: ou=People, o=Ever
ou: People
objectClass: top
objectClass: organizationalUnit
dn: uid=admin, ou=Staff, o=Ever
uid: admin
cn: LDAP Adminstrator
sn: admin
userPassword: {SHA}5en6G6MezRroT3XKqkdPOmY/BfQ=
objectClass: Top
objectClass: Person
objectClass: Organizationalperson
objectClass: Inetorgperson
dn: uid=admin,ou=People,o=Ever
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
userPassword: {SHA}5en6G6MezRroT3XKqkdPOmY/BfQ=
displayName: admin
mail: admin@eversystems.com.br
uid: admin
cn: Administrator
sn: admin
Inserire i campi nella propria directory LDAP usando il seguente comando:
slapadd -c -l Ever.ldif -f slapd.conf -v -d 256
Ora, avviare il demone slapd e lanciare una query usando il comando ldapsearch:
root@rdnt03:~# ldapsearch -U admin@rdnt03 -b 'o=Ever' '(objectclass=*)' SASL/DIGEST-MD5 authentication started Please enter your password: SASL username: admin@rdnt03 SASL SSF: 128 SASL installing layers ... Entries ...
Questo è tutto! Se si preferisce usare SASL con kerberos V o GSSAPI, c'è un link utile su http://www.openldap.org/doc/admin22/sasl.html. Questo link presuppone che si sia riusciti a installare e configurare la libreria di SASL. Le mailing list aiuteranno ad ottenere suggerimenti su questo problema: http://asg.web.cmu.edu/sasl/index.html#mailinglists