Table of Contents

Upgrade from 2.0.x to 2.0.y

Update from one minor version to another does not require any particular action except:

Please apply general caution as you would with any software: have backups and a rollback plan ready!

Do not forget to read the release notes of the version you are about to install for any specific instructions.

RPM users

If you have installed LemonLDAP::NG from official RPMs, you may run into bug #1757 and lose your Apache configuration files while updating from LemonLDAP::NG 2.0.0 or 2.0.1 to later versions. Please backup your /etc/httpd/conf.d/z-lemonldap-ng-*.conf files before the update.

Upgrade from 1.9 to 2.0

2.0 is a major release, lot of things have been changed. You must read this document before upgrade.

Upgrade order from 1.9.*

As usual, if you use more than 1 server and don't want to stop SSO service AND IF YOU HAVE NO INCOMPATIBILITY MENTIONED IN THIS DOCUMENT, upgrade must be done in the following order:

  1. servers with handlers only;
  2. portal servers (all together if your load balancer is stateless (user or client IP) and if users use the menu);
  3. manager server
You must revalidate your configuration using the manager.

Installation

French documentation is no more available. Only English version of this documentation is maintained now.

This release of LL::NG requires these minimal versions of GNU/Linux distributions:

For SAML features, we require at least Lasso 2.5 and we recommend Lasso 2.6.

Configuration

  mailUrl => 'http://auth.example.com/resetpwd',
  registerUrl => 'http://auth.example.com/register',
Apache mod_perl has got lot of troubleshooting problems since 2.4 version (many segfaults,...), especially when using MPM worker or MPM event. That's why LL::NG doesn't use anymore ModPerl::Registry: all is now handled by FastCGI (portal and manager), except for Apache2 Handler.

For Handlers, it is now recommended to migrate to Nginx, but Apache 2.4 is still supported with MPM prefork.

Configuration refresh

Now portal has the same behavior than handlers: it looks to configuration stored in local cache every 10 minutes. So it has to be reload like every handler.

If you want to use reload mechanism on a portal only host, you must install a handler in Portal host to be able to refresh local cache. Include handler-nginx.conf or handler-apache2.conf for example

LDAP connection

Now LDAP connections are kept open to improve performances. To allow that, LL::NG requires an anonymous access to LDAP RootDSE entry to check connection.

Kerberos or SSL usage

Logs

Security

LLNG portal now embeds the following features:

Handlers

Rules and headers

Supported servers

Ajax requests

Before 2.0, an Ajax query launched after session timeout received a 302 code. Now a 401 HTTP code is returned. WWW-Authenticate header contains: SSO <portal-URL>

SOAP/REST services

AuthBasic Handler uses now REST services instead of SOAP.

CAS

CAS authentication module no more use perl CAS client, but our own code. You can now define several CAS servers in a specific branch in Manager, like you can define several SAML or OpenID Connect providers.

CAS issuer module has also been improved, you must modify the configuration of CAS clients to move them from virtual host branch to CAS client branch.

Developer corner

APIs

Portal has now many REST features and includes an API plugin. See Portal manpages to learn how to write auth modules, issuers or other features.

Portal overview

Portal is no more a single CGI object. Since 2.0, It is based on Plack/PSGI and Mouse modules. Little resume

Portal object
  |
  +-> auth module
  |
  +-> userDB module
  |
  +-> issuer modules
  |
  +-> other plugins (notification,...)

Requests are independent objects based on Lemonldap::NG::Portal::Main::Request which inherits from Lemonldap::NG::Common::PSGI::Request which inherits from Plack::Request. See manpages for more.

Handler

Handler libraries have been totally rewritten. If you've made custom handlers, they must be rewritten, see customhandlers.

If you used self protected CGI, you also need to rewrite them, see documentation.