Mécanismes d`authentification, d`autorisation et de
Transcription
Mécanismes d`authentification, d`autorisation et de
LemonLDAP - Wiki - NG - Presentation Présentation de LemonLDAP::NG LemonLDAP::NG Lemonldap::NG est un Web-SSO modulaire basé sur les modules Apache::Session. Il simplifie la construction d'une aire protégée en minimisant les impacts sur les applications. Il gère à la fois les authentifications et les autorisations et fournit des en-têtes HTTP pour la traçabilité. On obtient ainsi une protection AAA complete (Authentication, Authorization and Accounting) des espaces web. Lemonldap::NG est une réécriture complète de Lemonldap. Tous les éléments nécessaires à son exploitation et son administration sont fournis dans le package. En revanche les composants développés pour Lemonldap ne sont pas compatibles avec Lemonldap::NG. • Mécanismes d'authentification, d'autorisation et de traçabilité ° Authentification ° Autorisation · Performances ° Traçabilité · Tracer les accès au portail · Tracer les accès aux applications • Installation • Système de stockage des sessions • Auteur • Copyright et license Mécanismes d'authentification, d'autorisation et de traçabilité Tous les paramètres abordés dans ce chapître sont accessibles via l'interface d'administration (voir la démonstration). Authentification Si un utilisateur n'est pas encore authentifié et tente de se connecter à une aire protégée par un agent Lemonldap::NG, il est redirigé vers le portail. Celui-ci authentifie l'utilisateur par défaut par une connexion LDAP, mais vous pouvez également utiliser un autre schéma tel les certificats x509 (voir Lemonldap::NG::Portal::AuthSSL(3)). Lemonldap::NG utilise les cookies de session générés par le module Apache::Session soit aussi sécurisé que n'importe quelle système basé sur des cookies aléatoires de 128 bits. Il est recommandé d'activer l'option "cookie sécurisé" pour éviter les vols de session. Par défaut, une session reste 10 minutes dans le magasin local du serveur Apache, donc dans le pire des cas, un utilisateur conserve son autorisation au plus 10 minutes après avoir perdu ses droits. Autorisation Les autorisations sont controlées seulement par les agents protégeant les applications. En effet, le portail ne peut connaître à l'avance les applications sur lesquels l'utilisateur se connectera. En configurant votre Web-SSO, vous devez: • choisir les attributs LDAP que vous souhaitez utiliser pour les autorisations et la traçabilité, • créer d'éventuelles expressions Perl pour définir des groupes d'utilisateur (en utilisant les attributs LDAP), • créer des règles d'accès associant des expressions régulières triant les URL à des expressions Perl calculant le droit d'accès correspondant. Exemple (Voir Lemonldap::NG::Manager::Conf(3) pour comprendre le stockage de la configuration) : • Variables exportées (attributs LDAP): # Nom-choisi => attribut LDAP cn => cn departmentUID => departmentUID login => uid -1- LemonLDAP - Wiki - NG - Presentation • Groupes d'utilisateurs : # Nom-choisi => définition du groupe group1 => { $departmentUID eq "unit1" or $login = "user1" } • Protection d'un site web: chaque VirtualHost (ou hôte réel) Apache dispose de ses propres règles d'accès: ° www1.domain.com : ^/protected/.*$ => $groups =~ /bgroup1b/ default => accept • www2.domain.com : ^/site/.*$ => $uid eq "admin" or $groups =~ /bgroup2b/ ^/(js|css) => accept default => deny Performances Vous pouvez utiliser des expressions Perl aussi complexe que nécessaire et vous pouvez utiliser tous les attibuts LDAP (et créer vos propres attributs additionnels avec le mécanisme des macros) dans les définitions de groupes, les règles d'accès et les en-têtes HTTP personnalisés: vous devez seulement utiliser le nom choisi précédé d'un "$". Vous devez toutefois bien choisir vos expressions: • les groupes et les macros ne sont évaluées que lorsque l'utilisateur est renvoyé vers le portail, • les règles d'accès et les en-têtes exportés sont évalués à chaque requête sur un site protégé. Il est donc recommandé d'utiliser le mécanisme des groupes pour éviter de calculer de longues expressions à chaque requête: ^/protected/.*$ => $groups =~ /bgroup1b/ Dans la définition des groupes, vous pouvez au choix utiliser des filtres LDAP ou des expressions Perl ou encore mixer les deux. Les expressions Perl sont encadrées par {} : group1 => (|(uid=xavier.guimard)(ou=unit1)) group1 => <uid eq "xavier.guimard" or $ou eq "unit1"> group1 => (|(uid=xavier.guimard)<ou eq "unit1">) Pour limiter les requêtes LDAP, il est conseillé d'utiliser les expressions Perl. Ainsi seuls 2 sollicitations de l'annuaire sont nécessaires. Traçabilité Tracer les accès au portail Lemonldap::NG::Portal n'enregistre pas les événements de connexion par défaut, mais il est très facile de surcharger la méthode "log". Tracer les accès aux applications Comme un Web-SSO ne peut interpréter le contenu des requêtes HTTP transmise aux applications protégées, il ne peut enregistrer au mieux que les URL. Et comme Apache le fait parfaitement, Lemonldap::NG::Handler(3) lui fournit le nom à enregistrer dans les journaux. Le paramètre optionnel "whatToTrace" indique la variable à utiliser ($uid par défaut). La trace réelle doit être effectuée par l'application seule capable d'interpréter le résultat des transactions. Lemonldap::NG peut exporter des en-têtes HTTP aussi bien en utilisant Apache en reverse-proxy qu'en protégent directement les applications. Par défaut, le champ Auth-User est utilisé mais vous pouvez choisir les en-têtes que vous transmettez à chaque application séparemment. Les expressions définissant les en-têtes associent : • le nom d'en-tête, • une expression Perl utilisant les données de l'utilisateur (attributs, macros et groupes). Exemple: -2- LemonLDAP - Wiki - NG - Presentation • www1.domain.com : Auth-User => $uid Unit => $ou • www2.domain.com : Authorization => "Basic ".encode_base64($employeeNumber.":dummy") Remote-IP => $ip Installation Attention : • Lemonldap::NG est un projet différent de Lemonldap et contient tous les éléments nécessaires à son utilisation et son administration. Ainsi les logiciels tel le module webmin de Lemonldap ne fonctionnent pas avec Lemonldap::NG. • L'agent de protection Apache ("handler") fonctionne à la fois avec les versions 1.3 et 2.x d'Apache, c'est à dire avec les versions 1 et 2 de mod_perl (mais pas avec mod_perl 1.99). Le portail et le l'interface d'administration ("manager") sont de simples CGI et peuvent donc fonctionner sur n'importe quel serveur compatible. • La configuration de Lemonldap::NG ne doit être éditée qu'avec l'interface d'administration à oins que vous ne sachiez exactement ce que vous faites. Les paramètres présentés dans ce document sont tous accessibles dans l'arbre de configuration. Voir installation manuel? pour la documentation d'installation. Système de stockage des sessions Lemonldap::NG utilise 3 niveaux de cache pour les données des utilisateurs authentifiés : • un module Apache::Session::* au choix utilisé par le portail lemonldap::NG::Portal pour stocker les données après authentification, • un module Cache::Cache* au choix utilisé par l'agent Lemonldap::NG::Handler pour partager les données entre les threads et les processus d'Apache et bien sur entre les hôtes virtuels hébergés sur le même serveur, • les variables internes à l'agent Lemonldap::NG::Handler : si le même utilisateur utilise de nouveau le même thread ou processus, aucune requête n'est nécessaire pour calculer le droit d'accès. Ceci est particulièrement intéressant avec le système de connexions persistantes du protocole HTTP/1.1 (Keep-Alive). Ainsi, le nombre de requêtes au cache principal est limité à 1 par utilisateur actif toutes les 10 minutes. Lemonldap::NG est très rapide, mais vous pouvez encore améliorer les performances en utilisnt un module Cache::Cache ne nécessitant pas d'accès au disque. Auteur Xavier Guimard, <[email protected]> Copyright et license Copyright © 2005-2007 par Xavier Guimard <[email protected]> Ce logiciel est libre, vous pouvez le redistribuer et/ou le modifier sous les mêmes termes que Perl lui-même en version 5.8.4 ou à votre guise en version Perl 5 supérieure. Présentation de LemonLDAP::NG (fr) Creator: xwiki:XWiki.clement_oudot Date: 2007/03/29 05:47 Last Author: xwiki:XWiki.guimard Date: 2007/06/03 05:19 -3- LemonLDAP - Wiki - NG - Presentation Copyright (c) 2003-2007, ObjectWeb Consortium -4-