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.
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.
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 |
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);
“id” fieds is set to varchar(64)
(instead of char(32)) to use the now recommended SHA256 hash algorithm. See Sessions for more details.
CREATE TABLE
since “json” and “hstore” type are browseable. You should anyway add some indexes (see manpage).
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 |
Pour les bases de données telles PostgreSQL, ne pas oublier d'ajouter “Commit” avec une valeur de 1
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 |
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.