LEMONLDAP::NG : more documentation

This commit is contained in:
Xavier Guimard 2007-06-27 08:08:36 +00:00
parent df40bf3e1c
commit 397077bcc7
5 changed files with 179 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -35,6 +35,10 @@
<p class="paragraph"></p>
<ul>
<li><a href="#HArchitecture">Architecture</a></li>
<li><a href="#HCinC3A9matique">Cin&eacute;matique</a></li>
<li>
<a href=
"#HMC3A9canismesd27authentification2Cd27autorisationetdetraC3A7abilitC3A9">
@ -76,6 +80,94 @@
<li><a href="#HCopyrightetlicense">Copyright et license</a></li>
</ul>
<h3 class="heading-1-1"><span id="HArchitecture">Architecture</span></h3>
<p class="paragraph"></p>Lemonldap::NG est compos&eacute; de 3
&eacute;l&eacute;ments s'appuyant sur 3 bases de donn&eacute;es&nbsp;:
<p class="paragraph"></p><img src="lemonldap-ng-architecture.png" alt=
"lemonldap-ng-architecture.png" />
<p class="paragraph"></p>Composants de Lemonldap::NG :
<ul class="star">
<li>le Manager permet de g&eacute;rer la configuration de
Lemonldap::NG,</li>
<li>le portail est l'&eacute;l&eacute;ment d'authentification des
utilisateurs,</li>
<li>et enfin, des modules Apache prot&egrave;gent les applications. Ces
derniers peuvent prot&eacute;ger une aire d'un serveur Apache qui peut
&ecirc;tre un reverse-proxy. Dans ce dernier cas, il est
recommand&eacute; de s&eacute;curiser le lien entre le reverse-proxy et
le serveur masqu&eacute; car l'acc&egrave;s direct &agrave; ce serveur
peut se faire sans authentification. Un simple .htaccess ou un
&eacute;change de certificats peuvent convenir suivant le niveau de
s&eacute;curit&eacute; du r&eacute;seau h&ocirc;te.</li>
</ul>Trois bases de donn&eacute;es sont n&eacute;cessaires&nbsp;:
<ul class="star">
<li>la base de configuration : par d&eacute;faut, il s'agit d'un simple
r&eacute;pertoire, mais on peut utiliser une base de donn&eacute;e pour
permettre le fonctionnement si tous les &eacute;l&eacute;ments ne se
trouvent pas sur le m&ecirc;me serveur,</li>
<li>l'annuaire LDAP : outre les authentifications (qui peuvent
&ecirc;tre effectu&eacute;es par un autre moyen type certificat x509),
il est utilis&eacute; pour r&eacute;cup&eacute;rer les
caract&eacute;ristiques de l'utilisateur et calculer ses droits,</li>
<li>la base des sessions : Lemonldap::NG utilise les modules
Apache::Session pour g&eacute;rer les sessions. Par d&eacute;faut, c'est
le module Apache::Session::File qui est utilis&eacute; et donc cette
base est un simple r&eacute;pertoire. En utilisant
Apache::Session::MySQL par exemple, la base devient accessible au
travers du r&eacute;seau permettant le d&eacute;ploiement de la solution
sur plusieurs serveurs.</li>
</ul>
<h3 class="heading-1-1"><span id=
"HCinC3A9matique">Cin&eacute;matique</span></h3>
<p class="paragraph"></p><img src="lemonldap-ng-cinematique.png" alt=
"lemonldap-ng-cinematique.png" />
<p class="paragraph"></p>D&eacute;tail du fonctionnement :
<ul class="star">
<li>1 et 2 : l'utilisateur non authentifi&eacute; (c'est &agrave; dire
ne pr&eacute;sentant pas un cookie valide) est redirig&eacute; vers le
portail d'authentification,</li>
<li>3 : requ&ecirc;te d'authentification de l'utilisateur (login et
mot-de-passe valid&eacute; sur l'annuaire LDAP ou autre
m&eacute;canisme),</li>
<li>4 : r&eacute;cup&eacute;ration des attributs de l'utilisateur,</li>
<li>5 : calcul des attributs suppl&eacute;mentaires demand&eacute; dans
la configuration (macros et groupes) et stockage des donn&eacute;es
utilisateur dans la base de donn&eacute;es des sessions,</li>
<li>6 : g&eacute;n&eacute;ration du cookie et redirection vers l'URL
demand&eacute;e initialement,</li>
<li>7 : interception du cookie par l'agent de protection (module Apache)
et r&eacute;cup&eacute;ration des donn&eacute;es utilisateur,</li>
<li>8 : v&eacute;rification de l'autorisation d'acc&egrave;s &agrave;
l'URL demand&eacute;e et transmission &agrave; l'application
(application directement install&eacute;e sur le serveur Apache ou
reverse-proxy) si l'utilisateur y est autoris&eacute;,</li>
<li>9 et 10 : les autres requ&ecirc;tes sont trait&eacute;es directement
avec les donn&eacute;es utilisateur en cache. Le droit d'acc&egrave;s
est calcul&eacute; pour chaque URL,</li>
</ul>Lorsque l'utilisateur se pr&eacute;sente sur un autre serveur
prot&eacute;g&eacute;, seules les phases 7 &agrave; 10 sont
rejou&eacute;es en toute transparence pour l'utilisateur.
<h3 class="heading-1-1"><span id=
"HMC3A9canismesd27authentification2Cd27autorisationetdetraC3A7abilitC3A9">M&eacute;canismes
d'authentification, d'autorisation et de

View File

@ -30,6 +30,10 @@
<p class="paragraph"></p>
<ul>
<li><a href="#HArchitecture">Architecture</a></li>
<li><a href="#HKinematics">Kinematics</a></li>
<li>
<a href=
"#HAuthentication2CAuthorizationandAccountingmechanisms">Authentication,
@ -69,6 +73,80 @@
<li><a href="#HCopyrightandlicence">Copyright and licence</a></li>
</ul>
<h3 class="heading-1-1"><span id="HArchitecture">Architecture</span></h3>
<p class="paragraph"></p>Lemonldap::NG est composed by 3 elements and 3
databases&nbsp;:
<p class="paragraph"></p><img src="lemonldap-ng-architecture.png" alt=
"lemonldap-ng-architecture.png" />
<p class="paragraph"></p>Lemonldap::NG components :
<ul class="star">
<li>the Manager used to manage Lemonldap::NG configuration,</li>
<li>the Portal used to authenticate users,</li>
<li>Apache modules used to protect applications. They can protect an
Apache area which can be a reverse-proxy. In this case, it is
recommended to securise the link between the reverse-proxy and the
hidden server because access can be done without authentication to this
server. A simple .htaccess or an SSL handshake can be used depending on
the security level of the host network.</li>
</ul>Three databases are required&nbsp;:
<ul class="star">
<li>the configuration database : by default, it's a simple directory,
but you can use a network database to share configuration if all the
Lemonldap::NG components aren't on the same physical server,</li>
<li>the LDAP server : in addition to the authentications (that can be
done by another mechanism as X509 certificates), it is used to load user
attributes and calculate the rights,</li>
<li>the sessions database : Lemonldap::NG uses Apache::Session modules
to manage sessions. By default, it uses Apache::Session::File module and
so, this database is a simple directory. Using Apache::Session::MySQL
for example, the database can be used on a network so Lemonldap::NG can
works on several physical servers.</li>
</ul>
<h3 class="heading-1-1"><span id="HKinematics">Kinematics</span></h3>
<p class="paragraph"></p><img src="lemonldap-ng-cinematique.png" alt=
"lemonldap-ng-cinematique.png" />
<p class="paragraph"></p>Detail of operations :
<ul class="star">
<li>1 and 2 : non-authenticated users (ie without valid cookie) are
redirected to the portal,</li>
<li>3 : authentication request (login password validated on LDAP server
or other mechanism),</li>
<li>4 : recovery ok user attributes,</li>
<li>5 : calculation of the additional attributes asked in the
configuration (macros and groups) and storage of the user datas in the
sessions database,</li>
<li>6 : cookie generation and redirection to the asked URL,</li>
<li>7 : interception of the cookie by the agent of protection (Apache
module) and recovery of the user datas,</li>
<li>8 : checking of the access authorization to the asked URL and
transmission to the application (real application or reverse-proxy) if
granted,</li>
<li>9 and 10 : other request are treated directly with the use datas
stored in the local cache. Access grant is calculated at each
request.</li>
</ul>When the authenticated user tries to access to another protected
server, only phases 7 to 10 are replayed in all transparency for the user.
<h3 class="heading-1-1"><span id=
"HAuthentication2CAuthorizationandAccountingmechanisms">Authentication,
Authorization and Accounting mechanisms</span></h3>

View File

@ -14,6 +14,8 @@ my $docs = {
'http://wiki.lemonldap.objectweb.org/xwiki/bin/view/NG/DocInstall?language=en' => 'advanced-install.html',
};
my %imgs;
while ( my ( $url, $file ) = each %$docs ) {
print STDERR "\n# $file\n";
open DOC, "wget -q -O - $url |";
@ -31,6 +33,9 @@ while ( my ( $url, $file ) = each %$docs ) {
$ind-- unless ($div);
s/\r//g;
utf8::decode($_);
if(s#(["'])/xwiki/bin/download/NG/Presentation/([\w\.\-]+)\1#$1$2$1#) {
$imgs{$2} = 1;
}
$buf .= $_;
}
close DOC;
@ -49,3 +54,7 @@ while ( my ( $url, $file ) = each %$docs ) {
print FILE "$buf</body></html>";
close FILE;
}
foreach(keys %imgs) {
`wget -N http://wiki.lemonldap.objectweb.org/xwiki/bin/download/NG/Presentation/$_`;
}