====== 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:
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
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