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
Explorateur de sessions ipAddr WHATTOTRACE
Session explorer (persistent sessions) _session_uid
Resctriction d'ouverture de session ipAddr WHATTOTRACE
Authentification ou fourniture d'identité SAML _saml_id ProxyID _nameID _assert_id _art_id _session_id
Fourniture d'identité CAS _cas_id
Réinitialisation de mots-de-passe user
WHATTOTRACE doit être remplacé par l'attribut ou la macro configurée dans le paramètre indiquant le champ utilisateur à stocker dans les journaux (REMOTE_USER)
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

Cette documentation est construite autour de MySQL. 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.

CREATE TABLE sessions (
    id CHAR(32) NOT NULL PRIMARY KEY,
    a_session BLOB,
    _whatToTrace VARCHAR(255),
    ipAddr VARCHAR(15),
    KEY _whatToTrace (_whatToTrace),
    KEY ipAddr (ipAddr)
    );
Changer char(32) en char(64) pour utiliser l'algorithme de hashage SHA256 (recommandé). Voir Sessions pour plus de détails

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:mysql:dbname=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
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.