lemonldap-ng/build/lemonldap-ng/doc/faq-fr.html

383 lines
18 KiB
HTML

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<meta name="generator" content=
"HTML Tidy for Linux/x86 (vers 1 September 2005), see www.w3.org" />
<title>FAQ LEMONLDAP::NG</title>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
</head>
<body>
<div class="main-content">
<h2 class="heading-1"><span id="HFoireauxquestionsLemonldap3A3ANG">Foire
aux questions Lemonldap::NG</span></h2>
<p class="paragraph"></p>
<ul>
<li>
<a href="#HLemonldap3A3ANG">Lemonldap::NG</a>
<ul>
<li><a href="#HQu27estcequ27unWebSSO3F">Qu'est-ce qu'un Web-SSO
?</a></li>
<li><a href=
"#HQu27apporteLemonldap3A3ANGparrapportauxautresSSO3F">Qu'apporte
Lemonldap::NG par rapport aux autres SSO ?</a></li>
</ul>
</li>
<li>
<a href="#HConfiguration">Configuration</a>
<ul>
<li><a href=
"#HQuelsystC3A8medestockagedeconfigurationchoisir3F">Quel
syst&egrave;me de stockage de configuration choisir ?</a></li>
<li><a href=
"#HL27exemplefournifonctionneenHTTP2CmaispasenHTTPS">L'exemple
fourni fonctionne en HTTP, mais pas en HTTPS.</a></li>
<li><a href=
"#HCommentfairefonctionnerLemonldap3A3ANGavecunannuaireActiveDirectory3F">
Comment faire fonctionner Lemonldap::NG avec un annuaire
Active-Directory ?</a></li>
</ul>
</li>
<li>
<a href="#HFonctionnement">Fonctionnement</a>
<ul>
<li><a href="#HAquoisertlecachelocaldesagents28handlers293F">A quoi
sert le cache local des agents (handlers) ?</a></li>
<li><a href=
"#HPourquoinepeutonpasconfigurerlecachelocaldesagents28handlers29danslaconsoled27administration3F">
Pourquoi ne peut-on pas configurer le cache local des agents
(handlers) dans la console d'administration ?</a></li>
<li><a href=
"#HQu27estcequele7E7ECrossDomainAuthentication7E7E28CDA293F">Qu'est
ce que le <i class="italic">Cross Domain Authentication</i> (CDA)
?</a></li>
<li><a href=
"#HCommentfonctionnele7E7ECrossDomainAuthentication7E7E28CDA293F">Comment
fonctionne le <i class="italic">Cross Domain Authentication</i>
(CDA) ?</a></li>
</ul>
</li>
<li>
<a href="#HAuthentification">Authentification</a>
<ul>
<li><a href="#HPeutonchangerlemoded27authentification3F">Peut-on
changer le mode d'authentification ?</a></li>
</ul>
</li>
</ul>
<h3 class="heading-1-1"><span id=
"HLemonldap3A3ANG">Lemonldap::NG</span></h3>
<h4 class="heading-1-1-1"><span id="HQu27estcequ27unWebSSO3F">Qu'est-ce
qu'un Web-SSO ?</span></h4>
<p class="paragraph"></p>Un SSO <i class="italic">(Single Sign On)</i> 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&eacute;
dans Active Directory) par exemple est un SSO. Le probl&egrave;me de ces
syst&egrave;mes est qu'outre leur lourdeur, ils ne s'appliquent
qu'&agrave; des Intranets sur des machines relativement homog&egrave;nes.
<p class="paragraph"></p>Le Web-SSO est le portage de ce principe
restreint aux applications Web. L'utilisateur est donc authentifi&eacute;
au premier acc&egrave;s &agrave; une application web
prot&eacute;g&eacute;e et les authentifications se propagent lorsqu'il
change d'application. Le gros avantage est alors que le syst&egrave;me est
utilisable sur Internet sans pr&eacute;-requis sur les postes clients (il
suffit d'accepter les cookies de session). Par exemple, lorsqu'un
utilisateur acc&egrave;de &agrave; une bo&icirc;te-aux-lettres Google, il
n'est pas r&eacute;authentifi&eacute; s'il acc&egrave;de &agrave;
l'application de gestion des groupes ou tout autre application Google.
<p class="paragraph"></p>Lemonldap::NG est un des syst&egrave;mes
permettant la gestion du Web-SSO.
<h4 class="heading-1-1-1"><span id=
"HQu27apporteLemonldap3A3ANGparrapportauxautresSSO3F">Qu'apporte
Lemonldap::NG par rapport aux autres SSO ?</span></h4>
<ul class="star">
<li>Lemonldap comme lemonldap::NG sont des modules Apache Perl et
offrent des performances qui rendent imperceptible le traitement de
l'acc&egrave;s.</li>
<li>Un des autres points forts de Lemonldap::NG est sa capacit&eacute;
&agrave; g&eacute;rer les droits de fa&ccedil;on centralis&eacute;e: les
SSO type Kerberos ou CAS permettent le partage des authentifications
mais d&eacute;l&egrave;guent aux applications la gestion des
autorisations d'acc&egrave;s. Dans le cas de Lemonldap::NG, la gestion
des droits peut &ecirc;tre centralis&eacute;e totalement, en partie ou
pas du tout pour chaque application: Lemonldap::NG fournit un
syst&egrave;me d'autorisations bas&eacute; sur le tri des URL par
expressions r&eacute;guli&egrave;res auquelles on associe une
r&egrave;gle. Il fournit &eacute;galement des en-t&ecirc;tes HTTP
&agrave; l'application contenant n'importe quel attribut issue de
l'annuaire LDAP. Celle-ci peut alors g&eacute;rer la
tra&ccedil;abilit&eacute; des acc&egrave;s et &eacute;ventuellement des
droits d'acc&egrave;s (voir la <span class="wikiexternallink"><a href=
"http://wiki.lemonldap.objectweb.org/xwiki/bin/view/NG/Presentation#HMC3A9canismesd27authentification2Cd27autorisationetdetraC3A7abilitC3A9">
documentation AAA</a></span>).</li>
<li>Lemonldap::NG n'imose aucune modification de l'annuaire: les droits
sont calcul&eacute;s &agrave; partir de n'importe quel attribut.</li>
<li>Lemonldap::NG peut publier n'importe quel attribut LDAP ou des
expressions calcul&eacute;es &agrave; partir de ces attributs dans les
en-t&ecirc;tes HTTP. On peut ainsi &eacute;viter aux applications
d'avoir &agrave; consulter l'annuaire LDAP.</li>
<li>Lemonldap::NG traite tous les sites h&eacute;berg&eacute;s (virtuels
ou r&eacute;els) ind&eacute;pendamment: on peut ainsi fournir &agrave;
chaque application des en-t&ecirc;tes personnalis&eacute;s.</li>
<li>Lemonldap::NG fournit une interface web d'administration
pr&eacute;sentant simplement la configuration, les droits d'acc&egrave;s
et les en-t&ecirc;tes par site prot&eacute;g&eacute; (voir la
d&eacute;monstration&gt;<span class="nobr"><a href=
"http://lemonldap.objectweb.org/NG/ManagerDemo/fr/">http://lemonldap.objectweb.org/NG/ManagerDemo/fr/</a></span>).
On peut &eacute;galement ne montrer qu'une partie de la configuration en
lecture seule et une autre en lecture &eacute;criture: l'interface
d'administration peut ainsi &ecirc;tre partiellement
d&eacute;l&eacute;gu&eacute;e par site prot&eacute;g&eacute;.</li>
</ul>
<h3 class="heading-1-1"><span id=
"HConfiguration">Configuration</span></h3>
<h4 class="heading-1-1-1"><span id=
"HQuelsystC3A8medestockagedeconfigurationchoisir3F">Quel syst&egrave;me de
stockage de configuration choisir ?</span></h4>
<p class="paragraph"></p>Lemonldap::NG fournit 3 types de stockage de
configuration:
<ul class="star">
<li><strong class="strong">File</strong>: le syst&egrave;me le plus
simple, il ne permet en revanche de partager la configuration que parmi
les serveurs qui partagent un syst&egrave;me de fichier. On peut ainsi
l'utiliser dans le cas o&ugrave; tous les VirtualHosts &agrave;
prot&eacute;ger se trouvent sur le m&ecirc;me serveur,</li>
<li><strong class="strong">DBI</strong>: <span class=
"wikiexternallink"><a href=
"http://www.linuxmanpages.com/man3/DBI.3pm.php">DBI(3)</a></span> est
une couche d'abstraction de l'acc&egrave;s aux bases de donn&eacute;es
fournie par Perl. Utilis&eacute;e dans Lemonldap::NG, elle permet de
partager la configuration entre serveurs mais suppose que tous ces
serveurs acc&egrave;dent &agrave; la m&ecirc;me base de donn&eacute;e.
C'est une solution recommand&eacute;e pour partager la configuration sur
un r&eacute;seau de serveurs,</li>
<li><strong class="strong">SOAP</strong>: Ce syst&egrave;me n'est pas
&agrave; proprement parler un syst&egrave;me de stockage, mais permet
&agrave; un serveur distant d'acc&eacute;der &agrave; la configuration
par une simple connexion HTTP(S). Le serveur SOAP acc&egrave;de lui
&agrave; la configuration par un des syst&egrave;mes
pr&eacute;c&eacute;dents (File ou DBI).</li>
</ul>
<h4 class="heading-1-1-1"><span id=
"HL27exemplefournifonctionneenHTTP2CmaispasenHTTPS">L'exemple fourni
fonctionne en HTTP, mais pas en HTTPS.</span></h4>
<p class="paragraph"></p>Dans le m&eacute;canisme des redirections vers le
portail puis vers le site prot&eacute;g&eacute;, il faut indiquer &agrave;
l'agent (handler) s'il est de type HTTPS ou non. Ceci est fait par le
param&egrave;tre <tt>https</tt> qui doit &ecirc;tre mis &agrave; 1. Ce
param&egrave;tre n'est pas accessible dans la configuration (manager), car
il est sp&eacute;cifique aux h&ocirc;tes virtuels. C'est donc lors de
l'appel &agrave; la fonction <tt>init</tt> (dans le fichier My::Package)
qu'il doit &ecirc;tre renseign&eacute;:
<p class="paragraph"></p>
<pre>
__PACKAGE__-&gt;init ( {
localStorage =&gt; "Cache::FileCache",
localStorageOptions =&gt; {
'namespace' =&gt; 'MyNamespace',
'default_expires_in' =&gt; 600,
'directory_umask' =&gt; '007',
'cache_root' =&gt; '/tmp',
'cache_depth' =&gt; 5,
},
configStorage =&gt; {
type =&gt; 'File',
dirName =&gt; '/var/lib/lemonldap-ng/conf',
},
<strong class="strong">https =&gt; 1</strong>,
} );
</pre>
<h4 class="heading-1-1-1"><span id=
"HCommentfairefonctionnerLemonldap3A3ANGavecunannuaireActiveDirectory3F">Comment
faire fonctionner Lemonldap::NG avec un annuaire Active-Directory
?</span></h4>
<p class="paragraph"></p>Active-Directory utilise le champ <tt>cn</tt>
comme identifiant unique au lieu de <tt>uid</tt>. Il faut donc modifier la
configuration de Lemonldap::NG en deux points&nbsp;:
<ol>
<li>la recherche de l'utilisateur dans l'annuaire doit &ecirc;tre
effectu&eacute;e avec le champ <tt>cn</tt> (ou
<tt>samAccountName</tt>),</li>
<li>les journaux d'Apache doivent &ecirc;tre enrichis avec ce m&ecirc;me
champ.</li>
</ol>Pour le deuxi&egrave;me point, la modification est tr&egrave;s simple
: il faut remplacer <tt>$uid</tt> par <tt>$cn</tt> dans le champ
"Param&egrave;tres g&eacute;n&eacute;raux -&gt; Donn&eacute;e &agrave;
inscrire dans les journaux d'Apache (et v&eacute;rifier que cette variable
est d&eacute;clar&eacute;e dand les attributs &agrave; exporter). Le
changement de filtre de recherche n&eacute;cessite la surcharge d'une
m&eacute;thode dans le portail. Cette modification peut &ecirc;tre
effectu&eacute;e comme suit:
<pre>
#!/usr/bin/perl
use Lemonldap::NG::Portal::SharedConf;
my $portal = Lemonldap::NG::Portal::SharedConf-&gt;new(
{
configStorage =&gt; {
type =&gt; 'File',
dirName =&gt; '/var/lib/lemonldap-ng/conf',
},
<strong class="strong">formateFilter =&gt; sub {</strong>
my $self = shift;
$self-&gt;{filter} = "(&amp;(cn=" . $self-&gt;{user} . ")(objectClass=person))";
PE_OK;
} # fin de la surcharge
}
);
</pre>
<h3 class="heading-1-1"><span id=
"HFonctionnement">Fonctionnement</span></h3>
<h4 class="heading-1-1-1"><span id=
"HAquoisertlecachelocaldesagents28handlers293F">A quoi sert le cache local
des agents (handlers) ?</span></h4>
<p class="paragraph"></p>Le cache local des agents a deux fonctions:
<ul class="star">
<li>partager la configuration entre processus Apache: on &eacute;vite
ainsi un t&eacute;l&eacute;chargement de la configuration &agrave;
chaque cr&eacute;ation d'un processus. C'est &eacute;galement
indispensable pour utiliser le m&eacute;canisme de rechargement de la
configuration sans relance du serveur Apache,</li>
<li>partager les sessions en cours entre processus et threads Apache:
ceci permet d'&eacute;viter d'avoir &agrave; effectuer une requ&ecirc;te
au magasin central des sessions &agrave; chaque requ&ecirc;te (on ne
retombe en effet pas n&eacute;cessairement sur le m&ecirc;me processus).
Dans le cas o&ugrave; le cache central des sessions est accessible par
le r&eacute;seau, on transforme ainsi une requ&ecirc;te TCP en une
requ&ecirc;te au syst&egrave;me de ficher voir simplement &agrave; la
m&eacute;moire partag&eacute;e ce qui augmente fortement les
performances.</li>
</ul>
<h4 class="heading-1-1-1"><span id=
"HPourquoinepeutonpasconfigurerlecachelocaldesagents28handlers29danslaconsoled27administration3F">
Pourquoi ne peut-on pas configurer le cache local des agents (handlers)
dans la console d'administration ?</span></h4>
<p class="paragraph"></p>Le cache local doit &ecirc;tre choisi ou
param&eacute;tr&eacute; en fonction du serveur: si on choisit par exemple
le module Cache::FileCache, le r&eacute;pertoire de stockage n'est pas
n&eacute;cessairement le m&ecirc;me partout. De plus, une modification du
cache ne peut &ecirc;tre appliqu&eacute;e sans red&eacute;marrage du
serveur Apache contrairement aux autres param&egrave;tres
g&eacute;r&eacute;s par la console d'administration.
<h4 class="heading-1-1-1"><span id=
"HQu27estcequele7E7ECrossDomainAuthentication7E7E28CDA293F">Qu'est ce que
le <i class="italic">Cross Domain Authentication</i> (CDA) ?</span></h4>
<p class="paragraph"></p>Le syst&egrave;me de propagation de la session
Lemonldap::NG est bas&eacute; sur des cookies. Or ces cookies sont
attach&eacute;s au domaine dont ils sont issus. Lemonldap::NG fournit un
dispositif permettant de passer outre ce probl&egrave;me: il suffit
d'utiliser le portail Lemonldap::NG::Portal::CDA et les agents
Lemonldap::NG::Handler::CDA sur les sites prot&eacute;g&eacute;s en dehors
du domaine du portail.
<h4 class="heading-1-1-1"><span id=
"HCommentfonctionnele7E7ECrossDomainAuthentication7E7E28CDA293F">Comment
fonctionne le <i class="italic">Cross Domain Authentication</i> (CDA)
?</span></h4>
<p class="paragraph"></p>Un portail Lemonldap::NG::Portal::CDA
d&eacute;tecte si l'URL demand&eacute;e n'est pas dans le m&ecirc;me
domaine. Si c'est le cas, il ajoute un param&egrave;tre &agrave; cette
requ&ecirc;te correspondant au cookie de session. Lorsque l'utilisateur
est renvoy&eacute; vers cette URL, l'agent Lemonldap::NG::Handler::CDA
reconna&icirc;t ce param&egrave;tre et g&eacute;n&egrave;re alors le
cookie dans son domaine. Il retire alors le param&egrave;tre ajout&eacute;
par le portail et effectue le traitement normal de la requ&ecirc;te.
<h3 class="heading-1-1"><span id=
"HAuthentification">Authentification</span></h3>
<h4 class="heading-1-1-1"><span id=
"HPeutonchangerlemoded27authentification3F">Peut-on changer le mode
d'authentification ?</span></h4>
<p class="paragraph"></p>Lemonldap::NG fournit plusieurs modes
d'authentification (&agrave; param&eacute;trer dans le champ
"authentification" de l'interface d'administration) :
<ul class="star">
<li><strong class="strong">ldap</strong> : c'est le mode par
d&eacute;faut: le portail tente de se connecter avec les
&eacute;l&eacute;ments fournis par l'utilisateur</li>
<li><strong class="strong">CAS</strong> : le portail Lemonldap::NG
devient alors un simple relais CAS: si l'utilisateur n'est pas
authentifi&eacute;, on le revoie vers le portail CAS</li>
<li><strong class="strong">SSL</strong> : ce dispositif confie &agrave;
Apache le soin d'authentifier les utilisateurs par m&eacute;canisme SSL.
Ce dispositif est tr&egrave;s int&eacute;ressant lorsqu'on utilise des
certificats SSL: si on prot&egrave;ge toutes les applications par
certificats mutuels les nombreuses n&eacute;gociations SSL
p&eacute;naliserons les performances et en cas d'emploi de cartes
&agrave; puces prot&eacute;geant chaque op&eacute;ration, l'utilisateur
devra saisir plusieurs fois son code. Avec ce dispositif, seule
l'acc&egrave;s au portail Lemonldap::NG n&eacute;cessite la
pr&eacute;sentation du certificat client. Ensuite, c'est le cookie
s&eacute;curis&eacute; qui assure la propagation de
l'authentification.</li>
<li><strong class="strong">Apache</strong> : dans le m&ecirc;me esprit,
on confie &agrave; Apache l'authentification. Par exemple avec Kerberos,
le module Kerberos d'Apache assure la protection du portail. On
am&eacute;liore ainsi les performances puisqu'une seule
n&eacute;gociation Kerberos est n&eacute;cessaire pour toute la
session.</li>
</ul>
</div>
</body>
</html>