# Redirections des agents

Lorsqu'un utilisateur accède à un agent sans cookie, il est redirigé vers le portail, et l'URL cible est encodée dans l'URL de redirection (pour rediriger l'utilisateur après authentification).

## Protocole et port

Pour encoder l'URL de redirection, l'agent utilise des variables d'environnement Apache et des paramètres de configuration :

- HTTPS : utilise https comme protocole
- Port : port de l'application (par défaut, 80 pour http, 443 pour https)

Cesparamètres peuvent être configurés dans le manager, dans `Paramètres généraux` > `Paramètres avancés` > `Redirections des agents`.

These settings can be overridden per virtual host, see virtual host management.

## Accès interdits et erreurs du serveur

Les agents utilisent le code d'erreur d'Apache dans les cas suivants :

- L'utilisateur ne dispose pas de droits d'accès : FORBIDDEN (403)
- Une erreur est survenue côté serveur : SERVER_ERROR (500)
- The application is in maintenance: HTTP_SERVICE_UNAVAILABLE (503)

These errors can be catch trough Apache `ErrorDocument` directive or Nginx `error_page` directive, to redirect user on a specific page:

    # Apache: Common error page and security parameters
    ErrorDocument 403 http://auth.example.com/?lmError=403
    ErrorDocument 500 http://auth.example.com/?lmError=500
    ErrorDocument 503 http://auth.example.com/?lmError=503

    # Nginx: Common error page and security parameters
    error_page 403 http://auth.example.com/?lmError=403;
    error_page 500 http://auth.example.com/?lmError=500;
    error_page 503 http://auth.example.com/?lmError=503;

It is also possible to redirect the user without using `ErrorDocument`: the Handler will not returnV 403, 500, 503 code, but code 302 (REDIRECT).

L'utilisateur sera redirigé vers l'URL du portail avec une erreur dans le paramètre `lmError` de l'URL.

Ces paramètres peuvent être configurés dans le manager, dans `Paramètres généraux` > `Paramètres avancés` > `Redirections des agents`:

- Redirections pour les accès interdits : utilise 302 au lieu de 403
- Redirection pour les erreurs : utilise 302 au lieu de 500 ou 503

# Redirections du portail

Si un utilisateur est redirigé depuis un agent vers le portail pour s'authentifier et s'il est déjà authentifié, le portail le redirige vers l'URL de redirection.

- Redirection message: The redirection from portal can be done either with code 303 (See Other), or with a JavaScript redirection. Souvent la redirection prend du temps car c'est le premier accès de l'utilisateur à l'application protégée et il faut créer la session applicative ; la redirection JavaScript améliore le ressenti utilisateur en l'informant que l'authentification est réussie et en évitant qu'il clique de nouveau sur le bouton.
- Keep redirections for Ajax: By default, when an Ajax request is done on the portal for an unauthenticated user (after a redirection done by the handler), a 401 code will be sentwith a `WWW-Authenticate` header containing “SSO <portal-URL>”. Set this option to 1 to keep the old behavior (return of HTML code).