Authentification sur la base LDAP de SME d'un serveur apache externe

Ça y est, SME8 permet d'utiliser l'annuaire LDAP pour authentifier les utilisateurs. Trop top. Ce guide explique comment y connecter un serveur apache externe.

Pour ça, on va utiliser le module mod_authnz_ldap (inclus dans le paquet httpd sur CentOS).

Sur SME, l'authentification LDAP n'est possible depuis un hôte autre que localhost que si la connexion est sécurisée (SSL sur port 636 ou TLS sur port 389). On va donc dans un premier temps copier notre certificat du serveur SME sur notre serveur apache, pour que la connexion puisse être validée. Ce certificat sera placé par exemple dans /etc/pki/tls/certs/ca-sme.pem. On ajoute maintenant un fragment de configuration sur notre serveur apache:

cat<<'HERE' > /etc/httpd/conf.d/ldap_ca.conf LDAPTrustedGlobalCert CA_BASE64 /etc/pki/tls/certs/ca-sme.pem HERE

Maintenant, il ne reste plus qu'à activer l'authentification sur les pages que vous voulez, par exemple:

<Directory /var/www/callback/>
AddHandler cgi-script .cgi .pl
Options +ExecCGI
SSLRequireSSL on
order deny,allow
deny from all
allow from all
AuthType basic
AuthName "CallBack Access"
AuthBasicProvider ldap
AuthLDAPURL ldap://sme.domain.tld/ou=Users,dc=domain,dc=tld?uid TLS
Require ldap-group cn=tech,ou=Groups,dc=domain,dc=tld
AuthLDAPGroupAttribute memberUid
AuthLDAPGroupAttributeIsDN off
</Directory>

Dans cet exemple, tous les membres du groupe tech seront authorisés à accéder à la ressource après s'être authentifié correctement. Pour plus d'information sur la configuration de mod_authnz_ldap: http://httpd.apache.org/docs/2.1/mod/mod_authnz_ldap.html et http://httpd.apache.org/docs/2.1/mod/mod_ldap.html

Si notre serveur apache ne se trouve pas sur le réseau local, il faut autoriser son IP publique à accéder à notre serveur LDAP:

db configuration setprop ldap access public AllowHosts 12.13.14.15 expand-template /etc/rc.d/init.d/masq /etc/init.d/masq adjust expand-template /etc/hosts.allow

Modification des ACL

Ça peut être utile de modifier les ACL LDAP de SME. Par exemple

mkdir -p /etc/e-smith/templates-custom/etc/openldap/slapd.conf cat<<"EOF" > /etc/e-smith/templates-custom/etc/openldap/slapd.conf/95acls access to attrs=userPassword by self read by anonymous peername.ip="127.0.0.1" auth by anonymous ssf=128 auth by * none access to * by self read by users peername.ip=192.168.7.0%255.255.255.0 read by users ssf=128 read by * peername.ip="127.0.0.1" read by * none EOF

Ces ACL permettent:

d'interdire la lecture de l'arbre en anonymous, sauf depuis localhost

les utilisateurs authentifiés peuvent lire le contenu (sauf le userPassword), uniquement si la connexion est sécurisée