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