Le backend de session explorable (<ahref="http://search.cpan.org/perldoc?Apache::Session::Browseable"class="urlextern"title="http://search.cpan.org/perldoc?Apache::Session::Browseable"rel="nofollow">Apache::Session::Browseable</a>) fonctionne exactement comme le module Apache::Session::* correspondant mais ajoute des index qui améliore les performances de l'<ahref="documentation/features.html#session_explorer"class="wikilink1"title="documentation:features">explorateur de session</a> et les <ahref="documentation/features.html#session_restrictions"class="wikilink1"title="documentation:features">restrictions de sessions</a>.
</p>
<p>
Lorsqu'on utilise des fonctionnalités telles <abbrtitle="Security Assertion Markup Language">SAML</abbr> (authentification ou fournisseur d'identité), <abbrtitle="Central Authentication Service">CAS</abbr> (fournisseur d'identité) ou le service de réinitialisation de mots-de-passe, il faut également indexer quelques champs.
</p>
<divclass="noteclassic">Sans index, <abbrtitle="LemonLDAP::NG">LL::NG</abbr> doit récupérer toutes les sessions stockées dans le backend et les examiner pour trouver les sessions demandées. Avec index, <abbrtitle="LemonLDAP::NG">LL::NG</abbr> ne récupère que les sessions demandées.
</div>
<p>
Le tableau suivant liste les champs à indexer suivant les fonctionnalités dont on souhaite améliorer les performances :
See Apache::Session::Browseable::* man page to see how use indexes.
</p>
<divclass="noteimportant"><em>WHATTOTRACE</em> must be replaced by the attribute or macro configured in the What To Trace parameter (REMOTE_USER). By default: <strong>_whatToTrace</strong>
</div><divclass="notetip">Il est préférable d'utiliser des bases de sessions séparées pour les sessions standard, <abbrtitle="Security Assertion Markup Language">SAML</abbr> et <abbrtitle="Central Authentication Service">CAS</abbr> afin de gérer séparemment les index.
</div><divclass="noteclassic">La documentation ci-dessous explique comment fixer les index à ipAddr et _whatToTrace. À adapter pour configurer les index voulus.
Il est possible d'utiliser Redis comme expliqué dans <ahref="nosqlsessionbackend.html"class="wikilink1"title="documentation:2.0:nosqlsessionbackend">Backend de sessions Redis</a>.
</p>
<p>
Il suffira juste d'ajouter le paramètre <code>Index</code> dans <code>Paramètres généraux</code> » <code>Sessions</code> » <code>Stockage des sessions</code> » <code>Module Apache::Session</code> :
<h3class="sectionedit7"id="prepare_database">Préparer la base de données</h3>
<divclass="level3">
<p>
La base de donnée doit être préparée exactement comme celle du <ahref="sqlsessionbackend.html#prepare_the_database"class="wikilink1"title="documentation:2.0:sqlsessionbackend">backend de session SQL</a> si ce n'est qu'un champ doit être ajouté pour chaque donnée à indexer.
id <spanclass="kw1">VARCHAR</span><spanclass="br0">(</span><spanclass="nu0">64</span><spanclass="br0">)</span><spanclass="kw1">NOT</span><spanclass="kw1">NULL</span><spanclass="kw1">PRIMARY</span><spanclass="kw1">KEY</span><spanclass="sy0">,</span>
<divclass="noteimportant">For Session Explorer and one-off sessions, it is recommended to use BTREE or any index method that indexes partial content.
</div>
<p>
“id” fieds is set to <code>varchar(64)</code> (instead of char(32)) to use the now recommended SHA256 hash algorithm. See <ahref="documentation/latest/sessions.html"class="wikilink1"title="documentation:latest:sessions">Sessions</a> for more details.
</p>
<divclass="notetip">With new Apache::Session::Browseable::<strong>PgHstore</strong> and <strong>PgJSON</strong>, you don't need to declare indexes in <code>CREATE TABLE</code> since “json” and “hstore” type are browseable. You should anyway add some indexes <em>(see manpage)</em>.
Aller dans le manager et mettre le module de session (<ahref="http://search.cpan.org/perldoc?Apache::Session::Browseable::MySQL"class="urlextern"title="http://search.cpan.org/perldoc?Apache::Session::Browseable::MySQL"rel="nofollow">Apache::Session::Browseable::MySQL</a> pour MySQL) dans <code>Paramètres généraux</code> » <code>Sessions</code> » <code>Stockage des sessions</code> » <code>Module Apache::Session</code> et ajouter le paramètre suivant (sensible à la casse) :
<tdclass="col0 centeralign"><strong>UserName</strong></td><tdclass="col1"> Le login de la base de données </td><tdclass="col2"> lemonldapng </td>
</tr>
<trclass="row4 roweven">
<tdclass="col0 centeralign"><strong>Mot-de-passe</strong></td><tdclass="col1"> Le mot de passe de la base de données </td><tdclass="col2"> mysuperpassword </td>
Aller dans le manager et mettre le module de session à <code>Apache::Session::Browseable::LDAP</code> Configurer ensuite les options comme dans le <ahref="ldapsessionbackend.html"class="wikilink1"title="documentation:2.0:ldapsessionbackend">backend de sessions LDAP</a>.
</p>
<p>
Il faut ajouter le champ <code>Index</code>, on peut aussi configurer le champ <code>ldapAttributeIndex</code> pour indiquer le nom d'attribut dans lequel les index doivent être stockés.
<thclass="col0 centeralign"> Nom </th><thclass="col1 centeralign"> Commentaire </th><thclass="col2 centeralign"> Exemple </th>
</tr>
</thead>
<trclass="row2 roweven">
<tdclass="col0 centeralign"><strong>ldapServer</strong></td><tdclass="col1"><abbrtitle="Uniform Resource Identifier">URI</abbr> du serveur </td><tdclass="col2"> ldap://localhost </td>
</tr>
<trclass="row3 rowodd">
<tdclass="col0 centeralign"><strong>ldapConfBase</strong></td><tdclass="col1"><abbrtitle="Distinguished Name">DN</abbr> de la branche des sessions </td><tdclass="col2"> ou=sessions,dc=example,dc=com </td>
</tr>
<trclass="row4 roweven">
<tdclass="col0 centeralign"><strong>ldapBindDN</strong></td><tdclass="col1"> Login de connexion </td><tdclass="col2"> cn=admin,dc=example,dc=password </td>
</tr>
<trclass="row5 rowodd">
<tdclass="col0 centeralign"><strong>ldapBindPassword</strong></td><tdclass="col1"> Mot-de-passe de connexion </td><tdclass="col2"> secret </td>
</tr>
<trclass="row6 roweven">
<tdclass="col0 centeralign"><strong>Index</strong></td><tdclass="col1"> Liste d'index </td><tdclass="col2"> _whatToTrace ipAddr </td>
<thclass="col0 centeralign"> Nom </th><thclass="col1 centeralign"> Commentaire </th><thclass="col2 centeralign"> Valeur par défaut </th>
</tr>
<trclass="row9 rowodd">
<tdclass="col0 centeralign"><strong>ldapObjectClass</strong></td><tdclass="col1"> Objectclass de l'entrée </td><tdclass="col2"> applicationProcess </td>
</tr>
<trclass="row10 roweven">
<tdclass="col0 centeralign"><strong>ldapAttributeId</strong></td><tdclass="col1"> Attribut où stocker l'idetifiant de session </td><tdclass="col2"> cn </td>
</tr>
<trclass="row11 rowodd">
<tdclass="col0 centeralign"><strong>ldapAttributeContent</strong></td><tdclass="col1"> Attribut où stocker le contenu de la session </td><tdclass="col2"> description </td>
</tr>
<trclass="row12 roweven">
<tdclass="col0 centeralign"><strong>ldapAttributeIndex</strong></td><tdclass="col1"> Attribut où stocker les index </td><tdclass="col2"> ou </td>
On peut utiliser différent login/mot-de-passe pour les serveurs en surchargeant les paramètres <code>globalStorage</code> et <code>globalStorageOptions</code> dans le fichier lemonldap-ng.ini.
id <spanclass="kw1">VARCHAR</span><spanclass="br0">(</span><spanclass="nu0">64</span><spanclass="br0">)</span><spanclass="kw1">NOT</span><spanclass="kw1">NULL</span><spanclass="kw1">PRIMARY</span><spanclass="kw1">KEY</span><spanclass="sy0">,</span>
id <spanclass="kw1">VARCHAR</span><spanclass="br0">(</span><spanclass="nu0">64</span><spanclass="br0">)</span><spanclass="kw1">NOT</span><spanclass="kw1">NULL</span><spanclass="kw1">PRIMARY</span><spanclass="kw1">KEY</span><spanclass="sy0">,</span>