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