Empiler de multiples backends (AuthMulti)

Authentification Utilisateurs Mot-de-passe

Présentation

This backend allows to chain authentication method, for example to failback to LDAP authentication if Remote authentication failed…

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

If CAS failed, LDAP will be used.

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. Example, if you have “DBI;LDAP” and DBI failed for authentication, Multi will try first to call LDAP as user database.

Configuration avancée

Le système “Multi” peut :

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

To stack several times the same module, use “#name” with different names. Exemple :

Multi LDAP#Openldap; LDAP#ActiveDirectory

Then you can have different parameters for each stored in a Perl hash entry named 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

To chain SSL, you have to set “SSLRequire optional” in Apache configuration, else users will be authenticated by SSL only.