Le WebSSO LemonLDAP::NG



Documents pareils
WebSSO, synchronisation et contrôle des accès via LDAP

LemonLDAP::NG / SAML2. Xavier GUIMARD (Gendarmerie Nationale) Clément OUDOT (Groupe LINAGORA)

SERVEUR HTTP Administration d apache

Tutoriel compte-rendu Mission 1

ADF Reverse Proxy. Thierry DOSTES

Installation d OwnCloud 8.0 sous Debian Avec connexion des utilisateurs active directory et mise en place de HTTPS

Présentation du relais HTTP Open Source Vulture. Arnaud Desmons Jérémie Jourdin

Installation et configuration de Vulture Lundi 2 février 2009

LemonLDAP::NG. LemonLDAP::NG 1.2. Clément OUDOT RMLL 9 juillet 2012

Serveurs de noms Protocoles HTTP et FTP

La suite logicielle Lin ID. Paris Capitale du Libre 25 septembre 2008

Serveur de partage de documents. Étude et proposition d'une solution afin de mettre en place un serveur de partage de documents.

Dans l'épisode précédent

Serveur Subversion Debian GNU/Linux

Single Sign On. Nicolas Dewaele. Single Sign On. Page 1. et Web SSO

Procédure d'installation

L3 informatique TP n o 2 : Les applications réseau

Qu'est ce qu'une Fédération d'identités? Définitions Fonctionnement de base Fonctionnement détaillé Les principaux composants

Authentification avec CAS sous PRONOTE.net Version du lundi 19 septembre 2011

Hébergement de site web Damien Nouvel

REPARTITION DE CHARGE LINUX

SAUVEGARDE COBIAN. LE B.A. BA De La sauvegarde Avec «CobianBackup» ou comment faire des sauvegardes automatiques

Installation du serveur WEB Apache ( MySQL, PHP) sous Debian 7.

Plan. Présentation du logiciel Sympa Architecture La gestion des hôtes virtuels Listes avec inclusion des abonnés Les modules d authentification

Présentation de la solution Open Source «Vulture» Version 2.0

Joomla! Création et administration d'un site web - Version numérique

TP Service HTTP Serveur Apache Linux Debian

Installation d un hébergement Web à domicile

CYBERGATE -TP-APACHE_2.DOC

TP PLACO. Journées Mathrice d'amiens Mars 2010

CDS Invenio Installation et configuration de base

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Authentification et contrôle d'accès dans les applications web

SQUID P r o x y L i b r e p o u r U n i x e t L i n u x

BTS SIO SISR3 TP 1-I Le service Web [1] Le service Web [1]

Description de la maquette fonctionnelle. Nombre de pages :

SAML et services hors web

Documentation CAS à destination des éditeurs

Guide Share France. Web Single Sign On. Panorama des solutions SSO

Tour d horizon des différents SSO disponibles

Ce document décrit une solution de single sign-on (SSO) sécurisée permettant d accéder à Microsoft Exchange avec des tablettes ou smartphones.

Aspects techniques : guide d interfaçage SSO

L'AAA, késako? Bruno Bonfils, fr.org>, Novembre Sous ce terme d'apparence barbare est regroupé l'ensemble des concepts suivants :

Installation GLPI-OCSNG-SSL Linux Debian Sarge

Serveur Web Apache - SSL - PHP Debian GNU/Linux

Drupal et les SSO Nicolas Bocquet < nbocquet@linalis.com >

Internet Information Services (versions 7 et 7.5) Installation, configuration et maintenance du serveur Web de Microsoft

Fonctionnement et mise en place d un reverse proxy sécurisé avec Apache. Dimitri ségard 8 mai 2011

Hébergement WeboCube. Un système performant et sécurisé. Hébergement géré par une équipe de techniciens

Apache en tant que reverse proxy

BTS SIO Dossier BTS. PURCHLA Romain

Ubuntu Linux Création, configuration et gestion d'un réseau local d'entreprise (3ième édition)

Différentes installations sur un serveur Windows 2000 ou 2003.

Configuration d'un annuaire LDAP

Gestion des identités

UE5A Administration Réseaux LP SIRI

TP HTTP. Université Pierre Mendès France U.F.R. Sciences de l Homme et de la Société Master IC²A

Annuaire LDAP, SSO-CAS, ESUP Portail...

Un exemple d'authentification sécurisée utilisant les outils du Web : CAS. P-F. Bonnefoi

LAMP : une nouvelle infrastructure LAMP. Une architecture modulaire. Installation

MANUEL D INSTALLATION D UN PROXY

Titre: Version: Dernière modification: Auteur: Statut: Licence:

Module 7 : Configuration du serveur WEB Apache

Déploiement d OCS 1.02 RC2 sous Debian Etch 64

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

(structure des entêtes)

Ocs Inventory et GLPI s appuie sur un serveur LAMP. Je vais donc commencer par installer les paquets nécessaires.

Préparation d un serveur Apache pour Zend Framework

Apache 2.4 Installation et configuration

2011 Hakim Benameurlaine 1

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

Linux sécurité des réseaux

Réaliser un inventaire Documentation utilisateur

Chapitre 1 Windows Server

1 / Introduction. 2 / Gestion des comptes cpanel. Guide débuter avec WHM. 2.1Créer un package. 2.2Créer un compte cpanel

Internet. Web Sécurité Optimisation

Les modules SI5 et PPE2

Authentifications à W4 Engine en.net (SSO)

AccessMaster PortalXpert

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

HTTP HTTP. IUT1 dpt SRC L Isle d Abeau Jean-françois Berdjugin. Introduction et architecture Messages Authentification Conclusion

INSTALLATION NG V2.1 D OCS INVENTORY. Procédure d utilisation. Auteur : GALLEGO Cédric 23/10/2014 N version : v1

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Service d'authentification LDAP et SSO avec CAS

Gestion d identités PSL Installation IdP Authentic

Manuel d'installation de Joomla 1.7

Introduction. aux architectures web. de Single Sign-On

NOTE: Pour une meilleure sécurisation, nous vous recommandons de faire l installation des outils web à l intérieur d un serveur virtuel.

Authentification dans ISA Server Microsoft Internet Security and Acceleration Server 2006

1 LE L S S ERV R EURS Si 5

Sauvegarder la base de données de Drupal avec le module Backup and Migrate

Table des matières Hakim Benameurlaine 1

Business et contrôle d'accès Web

Installation et configuration d OCS/GLPI sur un Serveur Debian

Application des Spécifications détaillées pour la Retraite, architecture portail à portail


Restriction sur matériels d impression

WEBMESTRE : CONCEPTION DE SITES ET ADMINISTRATION DE SERVEURS WEB

Transcription:

Formation Administration et sécurité Le WebSSO LemonLDAP::NG Auteurs : Clément OUDOT LINAGORA Formation formation@linagora.com

Licence Paternité - Pas d'utilisation Commerciale - Partage des Conditions Initiales à l'identique 2.0 France Vous êtes libres : de reproduire, distribuer et communiquer cette création au public, de modifier cette création. Selon les conditions suivantes : Paternité. Vous devez citer le nom de l'auteur original. Pas d'utilisation Commerciale. Vous n'avez pas le droit d'utiliser cette création à des fins commerciales. Partage des Conditions Initiales à l'identique. Si vous modifiez, transformez ou adaptez cette création, vous n'avez le droit de distribuer la création qui en résulte que sous un contrat identique à celui-ci. À chaque réutilisation ou distribution, vous devez faire apparaître clairement aux autres les conditions contractuelles de mise à disposition de cette création. Chacune de ces conditions peut être levée si vous obtenez l'autorisation du titulaire des droits. Ce qui précède n'affecte en rien vos droits en tant qu'utilisateur (exceptions au droit d'auteur : copies réservées à l'usage privé du copiste, courtes citations, parodie...) 2

Pourquoi LINAGORA met ce support sous licence Creative Commons Volonté de contribuer activement à l'essor du logiciel libre Promouvoir l'échange et favoriser l'émulation communautaire Assurer la pérennité de l'industrie logiciel libre et ne comptabiliser que la Valeur Ajoutée (le formateur) Partager le savoir et la connaissance à une vaste échelle LINAGORA croit au Libre! 3

Présentation du formateur Parcours du formateur 4

LINAGORA, premier EOS Créateur des concepts SS2L (Société de Services en Logiciels Libres) et TM2L (Tierce Maintenance Logiciel Libre), LINAGORA se définit désormais comme un Éditeur Orienté Service (EOS). LINAGORA propose une Open Source Software Assurance (OSSA) sur 150 logiciels libres : Prêts à l'industrialisation, sur une plate-forme unique : le 08000LINUX.com. Avec garantie de service contractuelle : en cas de bug, LINAGORA s engage au résultat sur des délais de résolution. Gestion de la feuille de route du logiciel pour le compte du client et s engage au reversement des développements. LINAGORA apporte également son expertise sur toute une gamme de services professionnels et de formations au travers de LINAGORA Formation. 5

LINAGORA Formation 7 années d'expérience, au service des technologies libres et Open Source 40 modules de formation répartis au travers de 7 filières Un cadre agréable, au cœur de Paris Deux salles de formation climatisées pouvant accueillir jusqu'à 10 stagiaires. 2006 : Plus de 150 stages effectués 2006 : Plus de 900 stagiaires Une satisfaction moyenne client de 18/20 Une note moyenne formateur de 16,27/20 6

Filières de formations Développement Web Linux embarqué Administration et sécurité J2EE OpenSource Les basiques Bases de données Bureautique OpenOffice.org 7

Organisation générale et planning 09h30 : début des cours 10h30 : pause du matin 10h45 : reprise des cours 12h00 : pause déjeuner 13h00 : reprise des cours 15h00 : pause de l'après-midi 15h15 : reprise des cours 17h30 : fin de journée 17h30 : libre discussion avec le formateur Introduction Installation Configuration standard Intégration des applications Fonctionnalités avancées : CDA SOAP SSL Liberty Alliance 8

Sommaire Introduction au WebSSO Installation Configuration Intégration d'une application Fonctionnalités avancées 9

Définition du WebSSO SSO signifie «Single Sign On», qui peut se traduire en français par «authentification unique». L'objectif d'une architecture informatique SSO est qu'un utilisateur s'authentifie une première fois pour ouvrir sa session de travail et accède ensuite à toutes ses applications sans rentrer de nouveau son (ou ses) mot(s) de passe. Le SSO regroupe donc plusieurs fonctionnalités : Couple identifiant/mot de passe unique Transmission transparente des informations de session aux applications Gestion des profils applicatifs, c'est-à-dire qui accède à quoi Le SSO n'empêche pas un utilisateur d'avoir plusieurs couples identifiant/mot de passe, seulement il n'en utilise qu'un pour s'authentifier, les autres sont liés par session et communiqués aux applications. 10

Modes de SSO SSO par agent : Un agent est installé sur le poste client C'est l'agent qui intercepte les flux des applications et pousse les mots de passe Mode utilisé généralement pour les clients lourds, pas pour le WebSSO SSO par délégation : Un agent est installé sur le serveur d'application Cet agent intercepte les requêtes à destination de l'application, et redirige l'utilisateur sur le portail si ce dernier n'a pas de session SSO active SSO par mandataire inverse (reverse-proxy) : Le serveur d'application n'est pas accédé directement par les utilisateur, mais seulement par le portail WebSSO C'est le portail qui vérifie la session SSO de l'utilisateur et qui joue ensuite le rôle de mandataire entre l'utilisateur et l'application 11

SSO par agent 12

SSO par délégation 13

SSO par mandataire inverse 14

HTTP - Présentation HTTP signifie «HyperText Transfer Protocol». La version 1.0 date de 1996, la version 1.1 (actuelle) de 1997. Le protocole définit les échanges entre un client HTTP (navigateur web) et un serveur HTTP. Le serveur délivre au client des ressources identifiées par une URL («Uniform Resource Locator»). 15

HTTP - Requête Un requête HTTP se découpe en : une ligne de requête, comprenant trois champs séparés par des espaces : la méthode (GET, HEAD, POST, PUT, DELETE,...) l'url la version HTTP (HTTP/1.0, HTTP/1.1,...) des lignes d'en-têtes (headers), avec un couple «attribut: valeur» par ligne (attributs courants : User-Agent, Accept-Encoding,...) une ligne vide le corps de la requête, généralement vide mais pouvant contenir les attributs et les valeurs d'un formulaire utilisant la méthode POST 16

HTTP - Réponse Une réponse HTTP se découpe en : une ligne de statut, comprenant trois champs séparés par des espaces : la version HTTP (HTTP/1.0, HTTP/1.1,...) le code de réponse (200, 403, 404,...) le message de réponse (OK, FORBIDDEN, NOT FOUND,...) des lignes d'en-têtes (headers), avec un couple «attribut: valeur» par ligne (attributs courants : Location, Content-Type,...) une ligne blanche le corps de la réponse, qui contient le document demandé 17

HTTP - Exemple GET http://www.linagora.com HTTP/1.1 Accept: text/html User-Agent: Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.7.6) HTTP/1.1 200 OK Date: Thu, 13 Mar 2008 15:05:29 GMT Server: Apache Content-Length: 264 Content-Type: text/html; charset=iso-8859-1 <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr" dir="ltr"> <head> <title>linagora, integrateur de reference sur le marche des logiciels libres</title>... </html> 18

HTTP - Cookie Le protocole HTTP est dit «sans état» (stateless) car d'une requête à l'autre, aucune information de connexion n'est conservée. Le problème peut être contourné : connexions persistantes en HTTP 1.1 sessions côté serveur cookies côté client Les cookies sont des fichiers textes de 4096 octets maximum stockés sur le disque dur du client. L'instauration du cookie se fait en trois étapes : requête simple du client réponse du serveur avec un champ d'en-tête «Set-cookie» requête du client avec un champ d'en-tête «Cookie» 19

Présentation de LemonLDAP (et ::NG) LemonLDAP est un ensemble de scripts et de modules Perl utilisés à travers mod_perl et le serveur HTTP Apache LemonLDAP et LemonLDAP::NG sont des logiciels libres, les projets sont hébergés chez OW2 : http://lemonldap.objectweb.org LemonLDAP a été créé par Eric German, du Ministère des Finances La version ::NG a été écrite par Xavier Guimard, de la Gendarmerie Nationale Le principe général est d'utiliser un annuaire LDAP pour : authentifier l'utilisateur (vérification du mot de passe) effectuer un contrôle d'accès (selon les attributs LDAP de l'utilisateur) approvisionner les applications (par transmissions des attributs LDAP dans les entêtes HTTP) LemonLDAP::NG a été choisi pour le projet FederID (http://www.federid.org) et bénéficie d'une possibilité d'authentification Liberty Alliance 20

Fonctionnement général 21

Contenu du programme LemonLDAP::NG LemonLDAP fournit trois types de modules Perl : Lemonldap::NG::Portal : gestion des accès LDAP et de la création des sessions Lemonldap::NG::Handler : protection des hôtes virtuels et application des règles d'accès Lemonldap::NG::Manager : interface graphique de configuration Ces modules doivent être instanciés dans des scripts Perl : Une page d'accueil du portail, affichant un formulaire d'authentification ou la liste des applications disponibles L'application Manager permettant l'accès graphique à la configuration Sur chaque serveur protégé un module Handler doit également être instancié D'autres pages peuvent être créées, par exemple des pages gérant les accès refusés LemonLDAP::NG fournit des exemples de tous ces scripts, ils peuvent être utilisés tels quels ou personnalisés 22

Bases Trois bases de données sont nécessaires : La base de configuration : par défaut, il s'agit d'un simple répertoire, mais on peut utiliser une base de donnée pour permettre le fonctionnement si tous les éléments ne se trouvent pas sur le même serveur, L'annuaire LDAP : outre les authentifications (qui peuvent être effectuées par un autre moyen), il est utilisé pour récupérer les caractéristiques de l'utilisateur et calculer ses droits, La base des sessions : Lemonldap::NG utilise les modules Apache::Session pour gérer les sessions. Par défaut, c'est le module Apache::Session::File qui est utilisé et donc cette base est un simple répertoire. En utilisant Apache::Session::MySQL par exemple, la base devient accessible au travers du réseau permettant le déploiement de la solution sur plusieurs serveurs. 23

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). 24

Sommaire Introduction au WebSSO Installation Configuration Intégration d'une application Fonctionnalités avancées 25

Méthodes d'installation Sous Debian : Utilisation du dépôt Debian testing (deb ftp.fr.debian.org/debian testing main) apt-get install lemonldap-ng Sur tous types d'os : Téléchargement de l'archive (wget) Extraction (tar) Compilation (make) Tests (make test) Installation (make install) Attention aux dépendances : Apache2 et mod_perl2 doivent être installés (et mod_perl2 activé) Différents modules Perl doivent obligatoirement être installés D'autres modules sont facultatifs (SOAP, CAS, Lasso,...) 26

Organisation des fichiers sous Debian /usr/share/doc /usr/share/doc/man /etc/lemonldap-ng LemonLDAP::NG /usr/share/lemonldap-ng /var/lib/lemonldap-ng /usr/share/perl5/lemonldap-ng 27

Installation avancée Chaque module peut être installé séparément : tar xzf lemonldap-ng-*.tar.gz cd lemonldap-ng-*/lemonldap-ng-(portal Handler Manager) perl Makefile.PL && make && make test sudo make install Exemple : installation du module Handler uniquement sur un serveur d'application distinct du portail Si une base de données (par exemple MySQL) est utilisé pour le stockage des sessions et/ou de la configuration, les tables suivantes doivent être créées : lmconfig sessions (sur le modèle imposé par Apache::Session) 28

Création du Manager #!/usr/bin/perl manager/index.pl use Lemonldap::NG::Manager; my $h = Lemonldap::NG::Manager->new( { configstorage => { type => "File", dirname => "/opt/lemonldapng/var/configuration/", }, dhtmlxtreeimagelocation => "imgs/", } ) or die "Unable to start"; $h->doall(); 29

Création du portail #!/usr/bin/perl portal/index.pl use HTML::Template; use Lemonldap::NG::Portal::SharedConf my $tpl_dir = "/opt/lemonldapng/portal" ; my $portal = Lemonldap::NG::Portal::SharedConf->new( { configstorage => { type => "File", dirname => "/opt/lemonldapngi/var/configuration/", }, } ); if ( $portal->process() ) { print $portal->header; my $template = HTML::Template->new( filename => "$tpl_dir/menu.tpl"); $template->param( AUTH_ERROR => $portal->error." : ".$portal->{user} ); print $template->output; } else { print $portal->header; my $template = HTML::Template->new( filename => "$tpl_dir/index.tpl"); $template->param( AUTH_ERROR => $portal->error ); $template->param( AUTH_URL => $portal->param('url') ); print $template->output; } 30

Création du Handler package Handler; handler/handler.pm use strict ; use Lemonldap::NG::Handler::SharedConf qw(:all) ; our $VERSION = '0.01' ; our @ISA = qw(lemonldap::ng::handler::sharedconf) ; *EXPORT_TAGS = *Lemonldap::NG::Handler::SharedConf::EXPORT_TAGS ; *EXPORT_OK = *Lemonldap::NG::Handler::SharedConf::EXPORT_OK ; *EXPORT = *Lemonldap::NG::Handler::SharedConf::EXPORT ; PACKAGE ->init ({ configstorage => { type => "File", dirname => "/opt/lemonldapng/var/configuration/", }, localstorage => 'Cache::FileCache', localstorageoptions => {}, https => '0', }) ; 1; 31

Sommaire Introduction au WebSSO Installation Configuration Intégration d'une application Fonctionnalités avancées 32

Localisation de la configuration Les paramètres de configuration sont répartis à plusieurs endroits : Manager : l'interface principale de configuration Le paramètre configstorage des fichiers portail, Manager et Handler La déclaration des hôtes virtuels Dans le cas d'un architecture en délégation, la configuration doit être partagée. Plusieurs options possibles : Par synchronisation des répertoires Par accès distant MySQL Par SOAP 33

Paramètres généraux dans le Manager Paramètres d'authentification Type d'authentification Portail Cookie sécurisé (SSL) Nom du cookie Domaine Attributs LDAP à exporter Paramètres LDAP Base de recherche LDAP Port du serveur LDAP Serveur LDAP Compte de connexion LDAP Mot de passe LDAP 34

Paramètres généraux dans le Manager Macros Stockage des sessions Module Apache::Session Paramètres du module Apache::Session Donnée à inscrire dans les journaux d'apache Groupes d'utilisateurs 35

Paramètres des applications dans le Manager test.example.com En-têtes HTTP... Règles Auth-User Auth-Name default ^/protected... 36

Utilisation des macros et des groupes Les macros permettent de calculer des expressions régulières disponibles ensuite pour paramétrer les hôtes virtuels. Par exemple : nom_complet => $givenname. " ". $surname La variable $nom_complet est alors disponible Les groupes peuvent être de deux types : Groupes définis localement dans le Manager. Par exemple : group1 => $uid eq "user1" or $uid eq "user2" or $uid eq "user3" La variable $groups contient alors group1 si l'utilisateur est user1, user2 ou user3 Groupes définis dans l'annuaire LDAP : Configuration de ldapgroupbase avec le DN de la branche des groupes La variable $groups contient alors les CN des groupes auxquels l'utilisateur appartient 37

Hôte virtuel pour le portail et le Manager <VirtualHost *> ServerName websso.linagora.com DocumentRoot /opt/lemonldapng/portal DirectoryIndex index.pl <Files ~ "\.(pl)$"> SetHandler perl-script PerlHandler ModPerl::Registry PerlSendHeader On </Files> <Directory /opt/lemonldapng/portal> AllowOverride None Options +ExecCGI -Indexes +FollowSymLinks +MultiViews </Directory> Alias /manager /opt/lemonldapng/manager <Directory /opt/lemonldapng/manager> AllowOverride None Options +ExecCGI +FollowSymLinks -Indexes </Directory> LogLevel warn ErrorLog /var/log/httpd/lemonldapng-error.log CustomLog /var/log/httpd/lemonldapng-access.log combined </VirtualHost> portal.conf 38

Hôte virtuel pour une application protégée PerlRequire /opt/lemonldapng/handler/handler.pm <Virtualhost *> ServerName appli.linagora.com DocumentRoot /var/www/appli PerlOptions +GlobalRequest PerlHeaderParserHandler Handler <Directory /var/www/appli> AllowOverride None Options -Indexes +FollowSymLinks +MultiViews Order Allow,Deny Allow from all </Directory> <Location /logout> PerlHeaderParserHandler Handler->logout </Location> LogLevel warn ErrorLog /var/log/apache2/appli-error.log CustomLog /var/log/apache2/appli-access.log combined </VirtualHost> appli.conf 39

Sommaire Introduction au WebSSO Installation Configuration Intégration d'une application Fonctionnalités avancées 40

Intégration d'une application Pré-requis : Accès au code source et possibilité de le modifier disposer d'un langage permettant la lecture des en-têtes HTTP Désactiver le formulaire d'authentification local Lire les en-têtes HTTP, en particulier celle fournissant l'identité de l'utilisateur Si nécessaire : associer l'identité de l'utilisateur à l'identité locale Si nécessaire : créer à la volée une entrée locale si inexistante Si nécessaire : désactiver la gestion locale des autorisations 41

Lecture des en-têtes en PHP <?php headers.php // // Function to collect all headers // function getheaders() { foreach ($_SERVER as $h => $v ) { if( ereg( 'HTTP_(.+)', $h, $hp ) ) $headers[$hp[1]] = $v ; } return $headers; } // Call the function $headers = getheaders() ; // Print headers foreach ($headers as $k => $v) { echo "$k = $v<br/>\n" ; }?> 42

Ajout d'une application dans le WebSSO Application préparée à recevoir les en-têtes HTTP Utilisation du Manager pour créer un nouvel hôte virtuel dans la configuration LemonLDAP::NG : Nom de l'hôte virtuel Règles d'accès Informations transmises Configuration du serveur Apache2 : Ajout d'un hôte virtuel ou reprise de l'existant Ajout des paramètres d'appel du Handler Choix d'architecture important : Mode mandataire inverse Mode délégation 43

Configuration pour le mandataire inverse PerlRequire /opt/lemonldapng/handler/handler.pm <Virtualhost *> ServerName appli.linagora.com DocumentRoot /var/www/appli PerlOptions +GlobalRequest PerlHeaderParserHandler Handler ProxyPass / http://serveur-reel/ ProxyPassReverse / http://serveur-reel/ <Location /logout> PerlHeaderParserHandler Handler->logout </Location> LogLevel warn ErrorLog /var/log/apache2/appli-error.log CustomLog /var/log/apache2/appli-access.log combined </VirtualHost> appli.conf 44

Sommaire Introduction au WebSSO Installation Configuration Intégration d'une application Fonctionnalités avancées 45

Présentation du X-domain Un domaine est constitué d'un nom (linagora, yahoo, google,...) et d'une extension, appelée aussi suffixe (fr, de, com, net,...). La spécification des cookies précise qu'un cookie doit être déclaré sur un domaine et envoyé à aucun autre. Les navigateurs refusent d'ailleurs de transmettre un cookie à un domaine différent de celui qui l'a émis. Certaines applications sont parfois réparties sur plusieurs domaines, elles utilisent alors des mécanismes dits de «cross-domain». Plusieurs solutions techniques permettent de faire du cross-domain, la plus répandue consiste à faire transiter le numéro de session dans l'url. L'architecture cross-domain suppose généralement l'existence d'un serveur maître unique, réalisant l'authentification et la mise en session des informations, et de un ou plusieurs esclaves, utilisant le numéro de session transmis pour retrouver les informations. Le cross-domain se configure dans LemonLDAP:NG en utilisant le module Lemonldap::NG::Portal::CDA 46

Utilisation de SOAP SOAP signifie Simple Object Access Protocol SOAP peut être utilisé sur des protocoles standards comme HTTP et SMTP Dans LemonLDAP::NG, les modules SOAP permettent : De lire et écrire la configuration De créer, modifier, supprimer et lire les session L'avantage est de permettre la centralisation de la configuration et des sessions tout en les rendant disponibles à des modules LemonLDAP::NG externes L'utilisation de SOAP requiert : Le module Perl SOAP::Lite La création de scripts SOAP pour l'accès à la configuration et aux sessions La protection par Apache de ces scripts La modification des composants distants pour indiquer le point d'accès SOAP Documentation complète : http://wiki.lemonldap.objectweb.org/xwiki/bin/view/ng/docsoap 47

Exemple d'accès SOAP aux sessions Module Lemonldap::NG::Manager::Apache::Session::SOAP Module Lemonldap::NG::Manager::Apache::Session::SOAP Portail Secondaire Portail Principal Agent (Handler) Sessions Web Service Application protégée Module Lemonldap::NG::Manager::SOAPServer 48

Script d'accès SOAP aux sessions #!/usr/bin/perl sessions.pl use Lemonldap::NG::Manager::SOAPServer; Lemonldap::NG::Manager::SOAPServer->start ( realsessionstorage => "Apache::Session::File", realsessionstorageoptions => { Directory => "/tmp", }, type => "sessions", AuthorizedFunctions => "new get set delete", ); 49

Script d'accès SOAP aux sessions #!/usr/bin/perl config.pl use Lemonldap::NG::Manager::SOAPServer; Lemonldap::NG::Manager::SOAPServer->start( configstorage => { type => 'DBI', dbichain => "DBI:mysql:database=lemonldapng;host=127.0.0.1", dbiuser => "ssoadmin", dbipassword => "ssopasswd", dbitable => "lmconfig", } ); 50

Sécurisation de LemonLDAP::NG LemonLDAP::NG permet différents types de sécurisation : Protection du portail et du manager en HTTPS Protection d'une application protégée en HTTPS Utilisation du mandataire inverse avec HTTPS (flux amont et aval) Accès à l'annuaire en LDAPS Accès SOAP en HTTPS Protection du manager et des points d'accès SOAP par authentification LDAPS 51

Paramètres de configuration Accès HTTPS à un hôte virtuel : SSLEngine on SSLCACertificateFile /opt/openssl/ca/ca.pem SSLCertificateFile /opt/openssl/serveur.pem SSLCertificateKeyFile /opt/openssl/serveur.key Clause spécifique à mod_proxy pour activer le SSL : SSLProxyEngine on Paramétrage d'un Handler (dans le code du Handler) pour protéger une application en HTTPS : https => 1 52

Protection du manager par LDAP Alias /manager /opt/lemonldapng/manager portal.conf <Directory /opt/lemonldapng/manager> AllowOverride None Options +ExecCGI +FollowSymLinks -Indexes # Parametres d'authentification LDAP AuthType Basic AuthName "Protection du Manager WebSSO" AuthBasicProvider ldap AuthzUserAuthoritative On AuthzLDAPAuthoritative Off # Adresse et parametres de la recherche AuthLDAPBindDN ou=lemonldapng,ou=applications,dc=linagora,dc=com # Mettre le mot de passe! AuthLDAPBindPassword PASS_LEMONLDAP AuthLDAPURL ldap://127.0.0.1:389/dc=linagora,dc=com?mail?sub?(objectclass=*) Require ldap-group cn=websso-admins,ou=groupes,dc=linagora,dc=com </Directory> 53

Modes d'authentification Lemonldap::NG fournit plusieurs modes d'authentification : ldap : c'est le mode par défaut: le portail tente de se connecter avec les éléments fournis par l'utilisateur CAS : le portail Lemonldap::NG devient alors un simple relais CAS : si l'utilisateur n'est pas authentifié, on le revoie vers le portail CAS SSL : ce dispositif confie à Apache le soin d'authentifier les utilisateurs par mécanisme SSL. Ce dispositif est très intéressant lorsqu'on utilise des certificats SSL : si on protège toutes les applications par certificats mutuels les nombreuses négociations SSL pénaliserons les performances et en cas d'emploi de cartes à puces protégeant chaque opération, l'utilisateur devra saisir plusieurs fois son code. Avec ce dispositif, seule l'accès au portail Lemonldap::NG nécessite la présentation du certificat client. Ensuite, c'est le cookie sécurisé qui assure la propagation de l'authentification. Apache : dans le même esprit, on confie à Apache l'authentification. Par exemple avec Kerberos, le module Kerberos d'apache assure la protection du portail. On améliore ainsi les performances puisqu'une seule négociation Kerberos est nécessaire pour toute la session. Liberty Alliance : tout en conservant un mode d'authentification classique, on propose à l'utilisateur d'utiliser la fédération d'identités Liberty Alliance en permettant à celui-ci de s'authentifier sur un fournisseur d'identités. 54

Liberty Alliance 2 8 12 4 13 1 5 9 3 Agent (Handler) Fournisseur d'identités Identifiant Mot de passe 6 Assertion Consumer Portail WebSSO 14 15 Application protégée 7 LDAP 10 11 Sessions 55

Liberty Alliance 1) L'utilisateur se connecte à une ressource protégée 2) La requête est interceptée par l'agent (handler) LemonLDAP::NG. L'utilisateur n'a pas encore de session SSO ouverte, il est redirigé sur le portail WebSSO. 3) Le portail LemonLDAP est configuré avec le module d'authentification Liberty Alliance, il reçoit la requête de l'utilisateur. Celui-ci peut choisir de s'identifier localement ou d'utiliser Liberty Alliance : si plusieurs fournisseurs d'identités sont référencés, une liste permet à l'utilisateur de sélectionner le sien. Si un seul fournisseur est présent, il est automatiquement sélectionné. 4) L'utilisateur est redirigé vers le fournisseur d'identités sélectionné. 5) Le fournisseur reçoit la requête et présente un formulaire. 6) L'utilisateur renseigne son identifiant et son mot de passe et soumet le formulaire. 7) L'authentification est effectuée sur l'annuaire. 56

Liberty Alliance 8) Quand l'authentification est validée, le NameIdentifier est transmis à l'utilisateur dans une requête de redirection vers l'adresse Assertion Consumer du portail SSO. 9) L'assertion est reçue par le portail avec le NameIdentifier. 10) Un filtre est appliqué sur l'annuaire pour retrouver les informations de l'utilisateur (DN et habilitations) à partir du NameIdentifier, qui a été injecté au préalable dans l'annuaire. 11) Ces informations sont stockées en session (MySQL,...). 12) L'utilisateur est redirigé vers l'adresse initiale de la ressource protégée. 13) L'agent détecte le cookie contenant l'identifiant de session. 14) L'habilitation d'accès est vérifiée dans la session. 15) Les requêtes parviennent à la ressource protégée. 57

Formation Merci de votre attention Administration et sécurité LINAGORA Formation formation@linagora.com