Empiler de multiples backends (AuthMulti)

Authentification Utilisateurs Mot-de-passe

Présentation

Ce backend permet de chaîner des méthodes d'authentification, par exemple pour basculer sur une authentification LDAP si l'authentification amont a échouée…

Configuration

Il est possible d'utiliser le module d'authentification “Multi”. Ce dispositif nécessite un paramètre : la chaîne d'authentification.

Par exemple :

Multi CAS;LDAP

Si CAS échoue, LDAP est utilisé.

Il est possibe d'ajouter une condition. Exemple :

Multi Remote $ENV{REMOTE_ADDR}=~/^192/;LDAP $ENV{REMOTE_ADDR}!~/^192/'

Si Multi est utilisé pour l'authentification et la base utilisateurs, il essaiera d'utiliser le même module. Exemple, en utilisant “DBI;LDAP”, si DBI échoue pour l'authentification, Multi essaie d'utiliser LDAP comme base d'utilisateurs.

Configuration avancée

Le système “Multi” peut :

La surcharge n'est pas paramètrable dans le manager

Pour empiler plusieurs fois le même module, utiliser ”#nom” avec différents noms. Exemple :

Multi LDAP#Openldap; LDAP#ActiveDirectory

Ensuite on peut avoir différents paramètres pour chacun stockés dans une table de hachage Perl nommée multi:

multi => {
    'LDAP#Openldap' => {
      ldapServer => 'ldap1.example.com',
      LDAPFilter => '(uid=$user)',
    },
    'LDAP#ActiveDirectory' => {
      ldapServer => 'ldaps://ad.example.com',
      LDAPFilter => '(&(sAMAccountName=$user)(objectClass=person))',
    }
},

Cette clef doit être stockée directement dans le fichier index.pl du portail ou dans lemonldap-ng.ini :

my $portal = Lemonldap::NG::Portal::SharedConf->new({
multi => {
    'LDAP#Openldap' => {
      ldapServer => 'ldap1.example.com',
      LDAPFilter => '(uid=$user)',
    },
    'LDAP#ActiveDirectory' => {
      ldapServer => 'ldaps://ad.example.com',
      LDAPFilter => '(&(sAMAccountName=$user)(objectClass=person))',
    }
},
})
[portal]
multi = {'LDAP#Openldap'=>{ldapServer=>'ldap1.example.com',LDAPFilter=>'(uid=$user)'},'LDAP#ActiveDirectory'=>{ldapServer=>'ldaps://ad.example.com',LDAPFilter=>'(&(sAMAccountName=$user)(objectClass=person))'}}

Problèmes connus

Authentification AuthApache

En utilisant ce module, le portail LL::NG est appelé uniquement si Apache ne retourne pas “401 Authentication required”, aucune bascule n'est donc possible.

Pour outrepasser ceci, suivre la documentation du module AuthApache

Authentification SSL

Pour chaîner SSL, il est nécessaire de mettre “SSLRequire optional” dans le fichier de configuration Apache, sinon les utilisateurs ne seront authentifiés que par SSL.