Authorizers¶
Un authorizer est un module chargé de décider si un profil utilisateur est
apte ou non à accéder à une ressource (voir
https://www.pac4j.org/docs/authorizers.html).
Les authorizers à appliquer doivent être spécifiés dans le paramètre
d'initialisation authorizers du filtre de sécurité dans le web.xml.
Exemple de filtre déclarant un authorizer isAuthenticated :
<filter>
<filter-name>EwtAuthFilterWeb</filter-name>
<filter-class>org.pac4j.jee.filter.SecurityFilter</filter-class>
<init-param>
<param-name>configFactory</param-name>
<param-value>ch.epilogic.ewt.auth.EwtAuthConfig</param-value>
</init-param>
<init-param>
<param-name>authorizers</param-name>
<param-value>isAuthenticated</param-value>
</init-param>
<init-param>
<param-name>clients</param-name>
<param-value>basic</param-value>
</init-param>
</filter>
La librairie pac4j inclut quelques authorizers prédéfinis qui peuvent être utilisés:
csrfCheck: Lors d'une requête POST, cet authorizer vérifie que le token CSRF a bien été envoyé via un header ou un paramètre pac4jCsrfToken dans la requête. À n'activer que si vous envoyez bien une valeur pour pac4jCsrfToken dans le formulaire HTML ou dans le header, sinon toutes les requêtes POST partiront en 403.isAnonymous: Vérifie que l'utilisateur N'EST PAS authentifiéisAuthenticated: Vérifie que l'utilisateur EST authentifié, c'est-à-dire que l'on reçoit un profil du fournisseur d'identité et que ce profil ne soit pas anonyme.none: Désactive tout contrôle concernant l'authentification. Si on ne souhaite pas utiliser de règle en particulier, utiliser "none" plutôt que vide, sinon ce sont les authorizers par défaut qui s'appliquent, c'est-à-direcsrfChecketisAuthenticated.isRemembered: Vérifie que l'utilisateur est authentifié et qu'une option du genre "se souvenir de moi" a été activée (non supporté dans la version actuelle)isFullyAuthenticated: Vérifie que l'utilisateur EST authentifié (comme ci-dessus), mais pas uniquement au moyen de "isRemembered". Cet authorizer peut être utile (non supporté dans la version actuelle)
Lorsque plusieurs authorizers sont spécifiés, ils doivent tous autoriser l'utilisateur. Une erreur 403 est retournée dès qu'un authorizer refuse l'autorisation.
Aux authorizers pac4j ci-dessus peuvent s'ajouter des authorizers
additionnels que l'on déclarera dans le fichier ewtAuthConfig.xml du
dossier WEB-INF de la web application. Chaque authorizer est décrit par
un bloc <authorizer> contenant des paramètres spécifiques au type
d'authorizer. Les attributs suivants sont obligatoires et doivent être
spécifiés pour chaque authorizer :
- attribut
nameobligatoire - Nom de l'authorizer. Le nom sera à reprendre dans le paramètre
d'initialisation
authorizersdu filtre de sécurité pour lequel il s'applique. - attribut
typeobligatoire -
Type d'authorizer. La version actuelle supporte les types suivants:
- attribut
disabledboolean - Cet attribut permet de désactiver un authorizer dans le fichier de
configuration. Cette option peut être pratique lors des tests. À noter
qu'il est aussi possible de désactiver un authorizer simplement en
modifiant le nom de la balise
<authorizer>(le bloc sera ignoré).