LEMONLDAP::NG : more documentation
This commit is contained in:
parent
df40bf3e1c
commit
397077bcc7
BIN
build/lemonldap-ng/doc/lemonldap-ng-architecture.png
Normal file
BIN
build/lemonldap-ng/doc/lemonldap-ng-architecture.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
BIN
build/lemonldap-ng/doc/lemonldap-ng-cinematique.png
Normal file
BIN
build/lemonldap-ng/doc/lemonldap-ng-cinematique.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
|
@ -35,6 +35,10 @@
|
|||
<p class="paragraph"></p>
|
||||
|
||||
<ul>
|
||||
<li><a href="#HArchitecture">Architecture</a></li>
|
||||
|
||||
<li><a href="#HCinC3A9matique">Ciné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é de 3
|
||||
éléments s'appuyant sur 3 bases de données :
|
||||
|
||||
<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érer la configuration de
|
||||
Lemonldap::NG,</li>
|
||||
|
||||
<li>le portail est l'élément d'authentification des
|
||||
utilisateurs,</li>
|
||||
|
||||
<li>et enfin, des modules Apache protègent les applications. Ces
|
||||
derniers peuvent protéger une aire d'un serveur Apache qui peut
|
||||
être un reverse-proxy. Dans ce dernier cas, il est
|
||||
recommandé de sécuriser le lien entre le reverse-proxy et
|
||||
le serveur masqué car l'accès direct à ce serveur
|
||||
peut se faire sans authentification. Un simple .htaccess ou un
|
||||
échange de certificats peuvent convenir suivant le niveau de
|
||||
sécurité du réseau hôte.</li>
|
||||
</ul>Trois bases de données sont nécessaires :
|
||||
|
||||
<ul class="star">
|
||||
<li>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,</li>
|
||||
|
||||
<li>l'annuaire LDAP : outre les authentifications (qui peuvent
|
||||
être effectuées par un autre moyen type certificat x509),
|
||||
il est utilisé pour récupérer les
|
||||
caractéristiques de l'utilisateur et calculer ses droits,</li>
|
||||
|
||||
<li>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.</li>
|
||||
</ul>
|
||||
|
||||
<h3 class="heading-1-1"><span id=
|
||||
"HCinC3A9matique">Cinématique</span></h3>
|
||||
|
||||
<p class="paragraph"></p><img src="lemonldap-ng-cinematique.png" alt=
|
||||
"lemonldap-ng-cinematique.png" />
|
||||
|
||||
<p class="paragraph"></p>Détail du fonctionnement :
|
||||
|
||||
<ul class="star">
|
||||
<li>1 et 2 : l'utilisateur non authentifié (c'est à dire
|
||||
ne présentant pas un cookie valide) est redirigé vers le
|
||||
portail d'authentification,</li>
|
||||
|
||||
<li>3 : requête d'authentification de l'utilisateur (login et
|
||||
mot-de-passe validé sur l'annuaire LDAP ou autre
|
||||
mécanisme),</li>
|
||||
|
||||
<li>4 : récupération des attributs de l'utilisateur,</li>
|
||||
|
||||
<li>5 : calcul des attributs supplémentaires demandé dans
|
||||
la configuration (macros et groupes) et stockage des données
|
||||
utilisateur dans la base de données des sessions,</li>
|
||||
|
||||
<li>6 : génération du cookie et redirection vers l'URL
|
||||
demandée initialement,</li>
|
||||
|
||||
<li>7 : interception du cookie par l'agent de protection (module Apache)
|
||||
et récupération des données utilisateur,</li>
|
||||
|
||||
<li>8 : vérification de l'autorisation d'accès à
|
||||
l'URL demandée et transmission à l'application
|
||||
(application directement installée sur le serveur Apache ou
|
||||
reverse-proxy) si l'utilisateur y est autorisé,</li>
|
||||
|
||||
<li>9 et 10 : les autres requêtes sont traitées directement
|
||||
avec les données utilisateur en cache. Le droit d'accès
|
||||
est calculé pour chaque URL,</li>
|
||||
</ul>Lorsque l'utilisateur se présente sur un autre serveur
|
||||
protégé, seules les phases 7 à 10 sont
|
||||
rejouées en toute transparence pour l'utilisateur.
|
||||
|
||||
<h3 class="heading-1-1"><span id=
|
||||
"HMC3A9canismesd27authentification2Cd27autorisationetdetraC3A7abilitC3A9">Mécanismes
|
||||
d'authentification, d'autorisation et de
|
||||
|
|
|
@ -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 :
|
||||
|
||||
<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 :
|
||||
|
||||
<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>
|
||||
|
|
|
@ -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/$_`;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user