Backend de session explorable

Présentation

Browseable session backend (Apache::Session::Browseable) works exactly like Apache::Session::* corresponding module but add index that increase session explorer and session restrictions performances.

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.

Without index, LL::NG will have to retrieve all sessions stored in backend and parse them to find the needed sessions. With index, LL::NG wil be able to get only wanted sessions from the backend.

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 _httpSessionType ipAddr
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.

Documentation below explains how set index on ipAddr and _whatToTrace. Adapt it to configure the index you need.

Browseable NoSQL

You can use Redis and set up the database like explained in Redis session backend.

You then just have to add the Index parameter in General parameters » Sessions » Session storage » Apache::Session module :

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

Browseable SQL

This documentation concerns MySQL. Some adaptations are needed with other databases.

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)
    );

Change char(32) by char(64) if you use the now recommended SHA256 hash algorithm. See Sessions for more details

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

Go in the Manager and set the session module to Apache::Session::Browseable::LDAP. Then configure the options like in LDAP session backend.

You need to add the Index field and can also configure the ldapAttributeIndex field to set the attribute name where index values will be stored.

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 Index list _whatToTrace ipAddr
Optional parameters
Nom Commentaire Default value
ldapObjectClass Objectclass of the entry applicationProcess
ldapAttributeId Attribute storing session ID cn
ldapAttributeContent Attribute storing session content description
ldapAttributeIndex Attribute storing index ou

Sécurité

Restrict network access to the 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.