Skip to content

Client basic-direct

Description

Ce client gère l'authentification de type "basic" fournie via le header Authorization. Il supporte l'authentification forte par TOTP (Time based One Time Password).

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

Paramètres

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.

realm
Nom du realm sur lequel l'utilisateur s'authentifie.
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. Il reprend le principe de lock out de la classe org.apache.catalina.realm.LockOutRealm de Tomcat.

L'élément <lockOut> ne prend pas de valeur, le seul fait de spécifier l'élément active le mécanisme de lock out. Il est cependant possible de définir des paramètres supplémentaires au moyen des attributs suivants:

failureCount
Nombre de tentatives de connexion après qu'un compte utilisateur ne soit bloqué. Par défaut la valeur est 5.
lockOutTime
Durée (en secondes) de blocage des comptes ayant effectué un trop grand nombre de tentatives en échec. Par défaut la valeur est 300 (5 minutes).
cacheSize
Taille du cache utilisé pour conserver les comptes bloqués. Le cache fonctionne sur un principe LRU (Least Recently Used), à savoir qu'une fois la limite du cache atteinte, les plus anciennes entrées sont supprimées en premier. Par défaut la valeur est 1000.
warningTime

Durée minimale (en secondes) pendant laquelle une entrée d'utilisateur ayant échoué à s'authentifier doit rester dans le cache avant d'être supprimée. Si une telle entrée est retirée du cache parce que sa taille maximale est atteinte (voir cacheSize) et que cette entrée n'a pas atteint la durée spécifiée dans warningTime, alors un message d'avertissement est envoyé dans le log de l'application. Par défaut la valeur est 3600 (1 heure).

L'idée de cette valeur est de pouvoir déceler dans le log des activités suspectes comme des attaques brut force. Dans ce cas, le cache va rapidement être saturé et les plus vieilles entrées devront en être retirées pour faire place aux nouvelles. Si ces retraits interviennent fréquemment plus vite que la durée fixée dans warningTime, cela signifie soit que le cache est trop petit, soit que le nombre de tentatives en échec est anormalement trop grand.

Clients supportant le lock out

Le mécanisme de lock out n'est disponible que pour les clients de type basic et form. Pour les autres types de clients, veuillez vous référer à la documentation du fournisseur de l'IAM correspondant.

Exemple

Le bloc ci-dessous déclare un client effectuant une authentification "basic" et s'appuyant sur le repository tomcat-file-repo. La vérification du mot de passe doit tenir compte du fait que ces derniers sont chiffrés avec l'algorithme SHA.

1
2
3
4
5
6
7
8
<client name="basic-client" type="basic">
    <realm>UserDatabase</realm>
    <repository>tomcat-file-repo</repository>
    <hashAlgo>SHA</hashAlgo>

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