Table of Contents

Backend de session explorable

Présentation

Le backend de session explorable (Apache::Session::Browseable) fonctionne exactement comme le module Apache::Session::* correspondant mais ajoute des index qui améliore les performances de l'explorateur de session et les restrictions de sessions.

Lorsqu'on utilise des fonctionnalités telles SAML (authentification ou fournisseur d'identité), CAS (fournisseur d'identité) ou le service de réinitialisation de mots-de-passe, il faut également indexer quelques champs.

Sans index, LL::NG doit récupérer toutes les sessions stockées dans le backend et les examiner pour trouver les sessions demandées. Avec index, LL::NG ne récupère que les sessions demandées.

Le tableau suivant liste les champs à indexer suivant les fonctionnalités dont on souhaite améliorer les performances :

Fonctionnalité Champs à indexer
Database cleaup (cron) _session_kind _utime
Explorateur de sessions _session_kind ipAddr WHATTOTRACE
Session explorer (persistent sessions) _session_kind _session_uid
Resctriction d'ouverture de session _session_kind ipAddr WHATTOTRACE

See Apache::Session::Browseable::* man page to see how use indexes.

WHATTOTRACE must be replaced by the attribute or macro configured in the What To Trace parameter (REMOTE_USER). By default: _whatToTrace
Il est préférable d'utiliser des bases de sessions séparées pour les sessions standard, SAML et CAS afin de gérer séparemment les index.
La documentation ci-dessous explique comment fixer les index à ipAddr et _whatToTrace. À adapter pour configurer les index voulus.

Browseable NoSQL

Il est possible d'utiliser Redis comme expliqué dans Backend de sessions Redis.

Il suffira juste d'ajouter le paramètre Index dans Paramètres généraux » Sessions » Stockage des sessions » Module Apache::Session :

Paramètres exigés
Nom Commentaire Exemple
server Serveur Redis 127.0.0.1:6379
Index Index _whatToTrace ipAddr

Browseable SQL

This documentation concerns PostgreSQL. Quelques adaptations sont nécessaires pour les autres bases de données.

Préparer la base de données

La base de donnée doit être préparée exactement comme celle du backend de session SQL si ce n'est qu'un champ doit être ajouté pour chaque donnée à indexer.

 Apache::SESSION::Browseable::Postgres example:
<code sql>
CREATE UNLOGGED TABLE sessions (
    id VARCHAR(64) NOT NULL PRIMARY KEY,
    a_session text,
    _whatToTrace text,
    _session_kind text,
    _utime BIGINT,
    ipAddr text
);
CREATE INDEX uid1 ON sessions USING BTREE (_whatToTrace);
CREATE INDEX s1   ON sessions (_session_kind);
CREATE INDEX u1   ON sessions (_utime);
CREATE INDEX ip1  ON sessions USING BTREE (ipAddr);
For Session Explorer and one-off sessions, it is recommended to use BTREE or any index method that indexes partial content.

“id” fieds is set to varchar(64) (instead of char(32)) to use the now recommended SHA256 hash algorithm. See Sessions for more details.

With new Apache::Session::Browseable::PgHstore and PgJSON, you don't need to declare indexes in CREATE TABLE since “json” and “hstore” type are browseable. You should anyway add some indexes (see manpage).

Manager

Aller dans le manager et mettre le module de session (Apache::Session::Browseable::MySQL pour MySQL) dans Paramètres généraux » Sessions » Stockage des sessions » Module Apache::Session et ajouter le paramètre suivant (sensible à la casse) :

Paramètres exigés
Nom Commentaire Exemple
DataSource La chaîne DBI dbi:Pg:database=sessions
UserName Le login de la base de données lemonldapng
Mot-de-passe Le mot de passe de la base de données mysuperpassword
Index Index _whatToTrace ipAddr _session_kind _utime
Apache::Session::Browseable::MySQL n'utilise pas les locks pour conserver les performances.

Pour les bases de données telles PostgreSQL, ne pas oublier d'ajouter “Commit” avec une valeur de 1

Browseable LDAP

Aller dans le manager et mettre le module de session à Apache::Session::Browseable::LDAP Configurer ensuite les options comme dans le backend de sessions LDAP.

Il faut ajouter le champ Index, on peut aussi configurer le champ ldapAttributeIndex pour indiquer le nom d'attribut dans lequel les index doivent être stockés.

Paramètres exigés
Nom Commentaire Exemple
ldapServer URI du serveur ldap://localhost
ldapConfBase DN de la branche des sessions ou=sessions,dc=example,dc=com
ldapBindDN Login de connexion cn=admin,dc=example,dc=password
ldapBindPassword Mot-de-passe de connexion secret
Index Liste d'index _whatToTrace ipAddr
Paramètres optionnels
Nom Commentaire Valeur par défaut
ldapObjectClass Objectclass de l'entrée applicationProcess
ldapAttributeId Attribut où stocker l'idetifiant de session cn
ldapAttributeContent Attribut où stocker le contenu de la session description
ldapAttributeIndex Attribut où stocker les index ou

Sécurité

Restreindre l'accès réseau au backend.

On peut utiliser différent login/mot-de-passe pour les serveurs en surchargeant les paramètres globalStorage et globalStorageOptions dans le fichier lemonldap-ng.ini.