# Liferay

## Présentation

Liferay est un portail d'entreprise.

Liferay peut utiliser LL::NG comme fournisseur SSO mais il faut gérer la création des comptes utilisateurs :

- À la main dans les écrans d'administration de Liferay
- Importés d'un serveur LDAP

Bien sûr, l'integration est complète si le serveur LDAP est utilisé comme base de données des utilisateurs dans LL::NG et Liferay.

Si le compte n'est pas créé ou ne peut être créé par un import LDAP, la connexion à Liferay sera refusée. Avec LDAP, login, mail, nom et prénom dont des attributs exigés. Si l'un est manquant, le compte ne sera pas créé.

Cette documentation explique seulement comment activer la partie SSO. Se reporter à la documentation Liferay pour activer l'alimentation LDAP.

## Configuration

### Administration Liferay

Accès à Liferay (première connexion):

Se connecter comme administrateur:

Aller dans `My account`:

Aller dans `Portal` » `Settings`:

Aller dans `Configuration` » `Authentication`:

Dans `General`, remplir au moins les informations suivantes :

- How do users authenticate?: by login

Il est conseillé de désactiver les autres options, car les utilisateurs utiliseront le portail LL::NG pour modifier ou réinitialiser leur mot-de-passe.

Il faut activer l'authentification LDAP sinon l'authentification SSO ne marchera pas. Faire ceci dans le panneau de contrôle ou dans le fichier de configuration :

    ldap.auth.enabled=true

Utiliser ensuite le paragraphe `SiteMinder` pour configurer le SSO :

- Enabled: Yes
- Import from LDAP: Yes (voir présentation)
- User Header: Auth-User (case sensitive)

Ne pas oublier de sauvegarder les changements !

### Hôte virtuel Liferay

Configurer l'hôte virtuel Liferay comme n'importe quel autre hôte virtuel protégé.

- Pour Apache:

    <VirtualHost *:80>
           ServerName liferay.example.com

           PerlHeaderParserHandler Lemonldap::NG::Handler

           ...

    </VirtualHost>

- Pour Nginx:

    server {
      listen 80;
      server_name liferay.example.com;
      root /path/to/application;
      # Requête interne d'authentification
      location = /lmauth {
        internal;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/var/run/llng-fastcgi-server/llng-fastcgi.sock;
        # Ignorer les données postées
        fastcgi_pass_request_body  off;
        fastcgi_param CONTENT_LENGTH "";
        # Conserver le nom d'hôte original
        fastcgi_param HOST $http_host;
        # Conserver la requête originale (le serveur LLNG va recevoir /llauth)
        fastcgi_param X_ORIGINAL_URI  $request_uri;
      }

      # Requêtes clients
      location / {
        auth_request /lmauth;
        auth_request_set $lmremote_user $upstream_http_lm_remote_user;
        auth_request_set $lmlocation $upstream_http_location;
        error_page 401 $lmlocation;
        try_files $uri $uri/ =404;

        ...

        include /etc/lemonldap-ng/nginx-lua-headers.conf;
      }
      location / {
        try_files $uri $uri/ =404;
      }
    }

### Hôte virtuel Liferay dans le manager

Aller dans le manager et créer un nouvel hôte virtuel pour Liferay.

Configurer simplement la règle d'accès. Il est possible d'ajouter une règle pour la déconnexion :

     ^/c/portal/logout => logout_sso

Configurer l'en-tête `Auth-User`.