Foire aux questions Lemonldap::NG

Lemonldap::NG

Qu'est-ce qu'un Web-SSO ?

Un SSO (Single Sign On) est un dispositif qui permet de partager les authentifications entre plusieurs applications. L'utilisateur ne s'authentifie ainsi qu'une fois et n'est pas interrompu lorsqu'il change d'application. Kerberos (utilisé dans Active Directory) par exemple est un SSO. Le problème de ces systèmes est qu'outre leur lourdeur, ils ne s'appliquent qu'à des Intranets sur des machines relativement homogènes.

Le Web-SSO est le portage de ce principe restreint aux applications Web. L'utilisateur est donc authentifié au premier accès à une application web protégée et les authentifications se propagent lorsqu'il change d'application. Le gros avantage est alors que le système est utilisable sur Internet sans pré-requis sur les postes clients (il suffit d'accepter les cookies de session). Par exemple, lorsqu'un utilisateur accède à une boîte-aux-lettres Google, il n'est pas réauthentifié s'il accède à l'application de gestion des groupes ou tout autre application Google.

Lemonldap::NG est un des systèmes permettant la gestion du Web-SSO.

Qu'apporte Lemonldap::NG par rapport aux autres SSO ?

Configuration

Quel système de stockage de configuration choisir ?

Lemonldap::NG fournit 3 types de stockage de configuration:

L'exemple fourni fonctionne en HTTP, mais pas en HTTPS.

Dans le mécanisme des redirections vers le portail puis vers le site protégé, il faut indiquer à l'agent (handler) s'il est de type HTTPS ou non. Ceci est fait par le paramètre https qui doit être mis à 1. Ce paramètre n'est pas accessible dans la configuration (manager), car il est spécifique aux hôtes virtuels. C'est donc lors de l'appel à la fonction init (dans le fichier My::Package) qu'il doit être renseigné:

__PACKAGE__->init ( {
    localStorage        => "Cache::FileCache",
    localStorageOptions => {
              'namespace'          => 'MyNamespace',
              'default_expires_in' => 600,
              'directory_umask'    => '007',
              'cache_root'         => '/tmp',
              'cache_depth'        => 5,
    },
    configStorage       => {
              type                 => 'File',
              dirName              => '/var/lib/lemonldap-ng/conf',
    },
    https               => 1,
} );

Comment faire fonctionner Lemonldap::NG avec un annuaire Active-Directory ?

Active-Directory utilise le champ cn comme identifiant unique au lieu de uid. Il faut donc modifier la configuration de Lemonldap::NG en deux points :
  1. la recherche de l'utilisateur dans l'annuaire doit être effectuée avec le champ cn (ou samAccountName),
  2. les journaux d'Apache doivent être enrichis avec ce même champ.
Pour le deuxième point, la modification est très simple : il faut remplacer $uid par $cn dans le champ "Paramètres généraux -> Donnée à inscrire dans les journaux d'Apache (et vérifier que cette variable est déclarée dand les attributs à exporter). Le changement de filtre de recherche nécessite la surcharge d'une méthode dans le portail. Cette modification peut être effectuée comme suit:
#!/usr/bin/perl
use Lemonldap::NG::Portal::SharedConf;
my $portal = Lemonldap::NG::Portal::SharedConf->new(
    {
        configStorage => {
            type    => 'File',
            dirName => '/var/lib/lemonldap-ng/conf',
        },
        formateFilter => sub {
            my $self = shift;
            $self->{filter} = "(&(cn=" . $self->{user} . ")(objectClass=person))";
            PE_OK;
        } # fin de la surcharge
    }
);

Fonctionnement

A quoi sert le cache local des agents (handlers) ?

Le cache local des agents a deux fonctions:

Pourquoi ne peut-on pas configurer le cache local des agents (handlers) dans la console d'administration ?

Le cache local doit être choisi ou paramétré en fonction du serveur: si on choisit par exemple le module Cache::FileCache, le répertoire de stockage n'est pas nécessairement le même partout. De plus, une modification du cache ne peut être appliquée sans redémarrage du serveur Apache contrairement aux autres paramètres gérés par la console d'administration.

Qu'est ce que le Cross Domain Authentication (CDA) ?

Le système de propagation de la session Lemonldap::NG est basé sur des cookies. Or ces cookies sont attachés au domaine dont ils sont issus. Lemonldap::NG fournit un dispositif permettant de passer outre ce problème: il suffit d'utiliser le portail Lemonldap::NG::Portal::CDA et les agents Lemonldap::NG::Handler::CDA sur les sites protégés en dehors du domaine du portail.

Comment fonctionne le Cross Domain Authentication (CDA) ?

Un portail Lemonldap::NG::Portal::CDA détecte si l'URL demandée n'est pas dans le même domaine. Si c'est le cas, il ajoute un paramètre à cette requête correspondant au cookie de session. Lorsque l'utilisateur est renvoyé vers cette URL, l'agent Lemonldap::NG::Handler::CDA reconnaît ce paramètre et génère alors le cookie dans son domaine. Il retire alors le paramètre ajouté par le portail et effectue le traitement normal de la requête.

Authentification

Peut-on changer le mode d'authentification ?

Lemonldap::NG fournit plusieurs modes d'authentification (à paramétrer dans le champ "authentification" de l'interface d'administration) :