Backend de session explorable

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.

Please use a recent version of Apache::Session::Browseable.

Current debian wheezy 0.7.1 version is obsolete and not functionnal. Last version can be found on CPAN : http://search.cpan.org/dist/Apache-Session-Browseable/

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.

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.

La documentation ci-dessous explique comment fixer les index à ipAddr et _whatToTrace; à adapter pour configurer les index nécessaires.

Mise en marche

Préparer la base de données

Pour utiliser Redis, il faut preparer la base de données. Voir backend de session Redis.

Exemple avec MySQL :

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 recommanded SHA256 hash algorithm. See Sessions for more details

Manager

Pour utiliser Redis, il faut 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

Exemple avec MySQL:

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

Sécurité

Restreindre l'accès réseau à la base de données.

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.