# Agent jeton sécurisé

## Présentation

L'agent jeton sécurisé est un agent particulier qui crée un jeton pour chaque requête et l'envoie à l'application protégée. L'identifiant utilisateur réel est stockédans un serveur Memcached et l'application protégée peut requérir le serveur Memcached pour obtenir l'identifiant utilisateur.

This mechanism allows one to do SSO on application with an unsafe link between Handler and the application, but with a safe link with the Memcached server.

## Configuration

### Hôte virtuel

#### Apache

Configurer l'hôte virtuel Sympa comme n'importe quel autre hôte virtuel protégé mais utiliser l'agent jeton sécurisé au lieu de l'agent par défaut.

    PerlModule Lemonldap::NG::Handler::Specific::SecureToken
    <VirtualHost *:80>
           ServerName secure.example.com

           # Load SecureToken Handler
           PerlHeaderParserHandler Lemonldap::NG::Handler::Specific::SecureToken

           ...

    </VirtualHost>

#### Nginx

This module uses Apache2 Filter and is not compatible with Nginx.

### Paramètres de l'agent

SecureToken parameters are the following:

- Serveurs Memcached : adresses des serveurs Memcached, separés par des espaces.
- Expiration du jeton : délai en secondes pour l'expiration du jeton (effacement du serveur Memcached).
- Attribut à stocker : la clef de session qui doit être stockée dans Memcached.
- URLs protégées : expressions régulières correspondant aux URLs pour lesquels un jeton sécurisé doit être envoyé, separées par des espaces
- Header name: name of the HTTP header carrying the secure token.
- Autorise les requêtes en cas d'erreur : autorise la requête qui a généré une erreur dans la génération du jeton à être transféré à l'application protégé sans jeton sécurisé (défaut : oui)

Suite au changement de l'API du handler dans la version 1.9, il est nécessaire de définir ces attributs dans le fichier `lemonldap-ng.ini` et non dans le Manager, par exemple:

    [handler]
    secureTokenMemcachedServers = 127.0.0.1:11211
    secureTokenExpiration = 60
    secureTokenAttribute = uid
    secureTokenUrls = .*
    secureTokenHeader = Auth-Token
    secureTokenAllowOnError = 1