Skip to content

Client form-indirect

Description

Ce client gère l'authentification via un formulaire HTML. Il supporte l'authentification forte par TOTP (Time based One Time Password).

Ce client présente beaucoup de similitudes avec le client basic.

Paramètres

loginUrl obligatoire
URL du formulaire de login.
usernameParam
Nom du champ de formulaire dans lequel l'utilisateur devra saisir son nom d'utilisateur. Si non défini, le champ attendu sera username.
passwordParam
Nom du champ de formulaire dans lequel l'utilisateur devra saisir son mot de passe. Si non défini, le champ attendu sera password.
repository

Référentiel(s) sur le(s)quel(s) s'appuyer pour l'identification des utilisateurs.

Il est possible de spécifier plusieurs référentiels en les séparant par une virgule.

hashAlgo

Méthode de hashage des mots de passe stockés dans le repository.

Le paramètre peut prendre un nom d'algorithme au sens de deux décrits pour les MessageDigest.

Ainsi, les valeurs MD2, MD5, SHA, SHA-1, SHA-256, SHA-384, SHA-512, etc. peuvent être utilisées. Lorsqu'un type d'algorithme est défini dans <hashAlgo>, le client s'attend à ce que le mot de passe enregistré dans le repository soit chiffré selon l'algorithme en question.

Le paramètre peut également prendre la valeur AUTO. Dans ce cas, le moteur s'attend à trouver dans le repository un mot de passe en clair, ou un mot de passe chiffré ayant en préfixe le type de chiffrement utilisé. Par exemple, le mot de passe "changeit" chiffré en MD5 devrait figurer ainsi dans le repository: "{MD5}b91cd1a54781790beaa2baf741fa6789".

Le paramètre peut également être vide ou non défini. Dans ce cas le client s'attend à trouver le mot de passe en clair dans le repository.

hashFormat

Format dans lequel le hash de mot de passe est stocké. Les valeurs possibles sont HEX, BASE64 ou RAW.

Si non défini, le format attendu par défaut est HEX.

totpUrl

URL de formulaire pour la saisie du token TOTP. Ce formulaire n'est affiché que si une authentification forte est attendue pour l'utilisateur, c'est-à-dire si un secret TOTP est associé à l'utilisateur au niveau du repository.

Le formulaire en question est un formulaire jsp qui doit être capable d'envoyer les données sur la bonne URL. L'URL en question doit mentionné le nom du client qui va prendre en charge le formulaire. Dans le cadre du token TOTP, le client en question porte le nom du client utilisé pour le formulaire de login avec un suffixe -totp. Par exemple, si le client qui prend en charge la saisie du nom d'utilisateur et du mot de passe (c.-à-d. le client qui traite le formulaire loginUrl) est form, alors le client qui se charge du formulaire totpUrl est form-totp.

tokenParam
Nom du champ de formulaire dans lequel l'utilisateur devra saisir son code à 6 chiffres (token TOTP). Si non renseigné, le moteur s'attend à recevoir le code via le champ token.
checkParam
Nom du champ de formulaire dans lequel le moteur véhicule un UUID. Ce dernier ne joue aucun rôle du point de vue de l'authentification. Il s'agit uniquement d'un contrôle éviter des problèmes de cache. Si non renseigné, le moteur s'attend à retrouver cette valeur via le champ check.
maxAttempts
Nombre de tentatives de saisie du code à 6 chiffres accordées à l'utilisateur. La valeur par défaut est 3.
maxDuration
Durée maximale autorisée pour une authentification, en secondes. Le calcul de la durée commence au moment où le formulaire de login est affiché.
lockOut

Paramètres de lock out. Ce mécanisme apporte une sécurité dans le sens qu'il bloque les comptes utilisateurs effectuant un trop grand nombre de tentatives d'authentification en échec.

Voir la documentation du client basic pour le détail.

Exemple

Le bloc ci-dessous déclare un client effectuant une authentification par formulaire en deux étapes : l'authentification par nom d'utilisateur et mot de passe dans un premier temps, puis l'authentification forte par OTP (à condition que celle-ci soit activée sur la fiche de l'utilisateur).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
<client name="form-client" type="form">
    <loginUrl>/ewt/login.jsp</loginUrl>
    <repository>script-file-repo</repository>
    <hashAlgo>MD5</hashAlgo>
    <usernameParam>j_username</usernameParam>
    <passwordParam>j_password</passwordParam>

    <!-- éléments spécifiques totp -->
    <totpUrl>/ewt/login-token.jsp</totpUrl>
    <tokenParam>j_token</tokenParam>
    <checkParam>j_check</checkParam>
    <maxAttempts>5</maxAttempts>
    <maxDuration>300</maxDuration>   <!-- 5 minutes -->

    <lockOut failureCount="5" lockOutTime="300"
             cacheSize="1000" warningTime="3600"/>
</client>