PgJSON session backend
This backend is the recommended one for production installations of LemonLDAP::NG.
Prerequisites
First, make sure you have installed the DBD::Pg
perl module.
On Debian-based distributions
apt install libdbd-pg-perl libapache-session-browseable-perl
On Fedora-based distributions
yum install 'perl(DBD::Pg)' 'perl(Apache::Session::Browseable)'
The minimum required version of PostgreSQL is 9.3 with support for JSON column types
Make sure you are using at least version 1.2.9 of Apache::Session::Browseable
, this might require installing it from Debian Backports or CPAN.
Create database schema
You can find the database schema in /usr/share/lemonldap-ng/ressources/sessions.pg.sql
.
LemonLDAP::NG configuration
Go in the Manager and set the session module to Apache::Session::Browseable::PgJSON
for each session type you intend to use:
General parameters
»Sessions
»Session storage
»Apache::Session module
General parameters
»Sessions
»Persistent sessions
»Apache::Session module
CAS Service
»CAS sessions module name
OpenID Connect Service
»Sessions
»Sessions module name
SAML2 Service
»Advanced
»SAML sessions module name
Then, set the following module options:
Parameter name |
Comment |
Example |
---|---|---|
DataSource |
The DBI string |
|
UserName |
The database username |
|
Password |
The database password |
|
TableName |
Table name (optional) |
|
Commit |
This setting is mandatory for PostgreSQL to work |
|
Tip
Unlike other browseable modules, Pg::JSON does not require an Index
parameter
Tip
We recommend adding the tcp_user_timeout and keepalives_idle options to the DBI string Refer to the full list of PostgreSQL connection options
Patroni support
Starting from version 1.3.17, Apache::Session::Browseable provides a direct Patroni PostgreSQL cluster
This works like PgJSON but can take an additional parameter PatroniUrl
which lists the Patroni servers available, then if there is a failure, the
driver will check for Patroni API to find the PostgreSQL leader and change
its DataSource
to use it. To use it, set Apache::Session::Browseable::Patroni
as Sessions module and set corresponding options. Example:
Parameters |
Example |
Comment |
---|---|---|
DataSource |
|
Unless an error occurs, the driver will use this data source |
UserName |
|
|
Password |
|
|
TableName |
|
|
Commit |
|
This setting is mandatory for PostgreSQL to work |
PatroniUrl |
|
List here all |