L'authentification sur une application Ewt peut être gérée soit par le
serveur d'application (par exemple via le mécanisme standard
d'authentification de Tomcat), soit par Ewt lui-même. Ewt intègre en
effet des classes permettant de gérer différents types d'authentification
(basic, form, oauth, oidc, keycloak, etc.), avec ou sans authentification
forte.
La méthode d'authentification dépend de la configuration décrite dans le
fichier web.xml.
Le fichier web.xml ci-dessous active le mode d'authentification de base, à
savoir l'authentification basée sur les credentials gérées par le serveur
d'application (fichier tomcat-users.xml dans le cas de Tomcat,
application-users.properties et application-roles.properties dans le cas
de JBoss, etc.)
Ewt intègre un ensemble d'éléments permettant d'authentifier les
utilisateurs au moyen de méthodes plus avancées, comme l'authentification
forte ou la possibilité de déléguer l'authentification à des
fournisseurs d'identités externes, via différents protocoles (oauth, oauth2,
oidc, etc.).
La mise en place d'une solution avancée nécessite de modifier le fichier
web.xml et également de configurer le(s) type(s) d'authentification
souhaité(s) via un fichier ewtAuthConfig.xml. Dans la suite de ce
chapitre, nous allons voir comment configurer ces deux fichiers. Veuillez
également consulter le chapitre relatif aux clients
pour avoir plus de détails sur les possibilités de configuration de ces
derniers.
Lorsque l'authentification est déléguée à Ewt, les éléments de sécurité
standards ne doivent pas être définis dans le fichier web.xml. Cela
signifie que les éléments <security-constraint>, <login-config> et
<security-role> doivent être retirés.
Il sont remplacés par des filtres chargés de traiter toutes les requêtes
adressées à Ewt. Dans l'exemple ci-dessous, le fichier déclare trois
filtres:
EwtAuthFilterWeb : Ce filtre traite les endpoints /web/* et
/data/*. Il prend en charge les requêtes envoyées par des
utilisateurs physiques utilisant un navigateur web. Il est configuré
pour appliquer une authentification par formulaire.
EwtAuthFilterSrv : Ce filtre traite les endpoints /rest/* et
/soap/*. Il s'oriente donc sur le traitement des requêtes envoyées
dans le cas de services web. Il est configuré pour appliquer une
authentification de type "basic".
EwtAuthCallback : Ce filtre est mappé sur l'endpoint /auth. Il
se charge de vérifier les credentials.
Ce fichier permet de spécifier les paramètres des différents
référentiels ("repository") et des "clients". Ici un client est un
mécanisme d'authentification. Le terme vient de la nomenclature utilisée
par la librairie pac4j sur laquelle repose
l'authentification dans Ewt.
Le fichier doit se trouver au même endroit que le fichier web.xml,
c'est-à-dire dans le dossier WEB-INF de la web application.
Repositories
Chaque référentiel possède un attribut name qui permet de le
référencer depuis les clients et d'un attribut type qui indique le
type du référentiel. Les paramètres des différents types de référentiels
sont donnés dans les
chapitres correspondants.
Clients
Chaque client possède un nom (attribut name). C'est ce nom qui est
repris dans le paramètre de filtre clients du web.xml. Le type quant
à lui indique à Ewt de quel type de client il s'agit. Une description
des différents clients actuellement disponibles dans Ewt est donnée dans
ce chapitre.
Autres éléments
Outre les repositories et les clients, le fichier permet de déclarer
d'autres paramètres:
callbackUrl
Ce paramètre est obligatoire. Il décrlare URL de callback pour
l'authentification, c'est-à-dire l'URL vers laquelle le fournisseur
d'identité va rediriger la requête pour signifier de la réussite ou
de l'échec de l'authentification.
disableCsrfCheck
Par défaut, le moteur active la protection CSRF au moyen d'un token.
Ce paramètre permet de désactiver cette protection. Cela peut être
pratique pour le debug lors du développement, mais il est recommandé
de laisser la protection CSRF active en-dehors de ce cadre
d'utilisation.
Le fichier ci-dessous fournit des exemples de paramètres pour les
référentiels file et script, ainsi que des exemples de clients
basic et form.