LDAP User authentication

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Procédure (authentification web via LDAP)
Module mod_authnz_ldap
Pré-requis Annuaire LDAP opérationnel (voir LDAP)
Voir aussi Apache · Kerberos single sign on

Restreindre l'accès à un espace web Apache en s'appuyant sur un annuaire LDAP existant : les utilisateurs s'authentifient avec leurs identifiants LDAP habituels, et l'accès peut être en plus limité à un groupe LDAP précis (utile pour un intranet, un outil interne, une zone d'administration).

Les exemples ci-dessous utilisent un domaine, un annuaire et des identifiants d'exemple à adapter à l'environnement réel.

Configurer le virtual host

vi /etc/httpd/conf.d/ldap_auth.conf
Listen 8000

<Directory "/var/www/html/">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted

    AuthType Basic
    AuthName "Acces restreint"
    AuthBasicProvider ldap
    AuthzLDAPAuthoritative off
    AuthLDAPGroupAttributeIsDN off
    AuthLDAPGroupAttribute memberUid
    AuthLDAPURL "ldap://annuaire.example.com:389/dc=example,dc=com"
    Require ldap-group cn=web,ou=Group,dc=example,dc=com
</Directory>

<VirtualHost *:8000>
    ServerAdmin webmaster@example.com
    DocumentRoot /var/www/html
    ServerName intranet.example.com
</VirtualHost>

(Require all granted et Require ldap-group se combinent en syntaxe Apache 2.4 avec <RequireAny>/<RequireAll> si on veut préciser explicitement comment elles s'articulent — par défaut plusieurs Require au même niveau sont en OU logique.)

Pour restreindre à un utilisateur LDAP précis plutôt qu'à un groupe :

Require ldap-user jdupont

Entrée LDAP correspondante

Le groupe référencé par AuthLDAPGroupAttribute/Require ldap-group doit exister côté annuaire, avec les membres attendus dans memberUid :

dn: cn=web,ou=Group,dc=example,dc=com
objectClass: posixGroup
objectClass: top
cn: web
gidNumber: 1005
description: Acces au site intranet
memberUid: jdupont

Points de vigilance

  • L'exemple ci-dessus utilise AuthType Basic : les identifiants transitent en
 clair sur le réseau. À ne jamais faire sans TLS (ldaps:// côté
 AuthLDAPURL, et HTTPS côté vhost) en dehors d'un réseau strictement interne et
 de confiance.
  • AuthzLDAPAuthoritative off permet à d'autres modules d'autorisation de prendre
 le relais si LDAP refuse l'accès ; à mettre à on si LDAP doit être la seule
 source de vérité.

Voir aussi