XmlAuthorizationManager
Les implémentations de AuthorizationManager sont dédiées au développeur d'applications web. Cette implémentation de AuthorizationManager permet de mettre en place des autorisations basées sur des fichiers XML.1. Paramètres de XmlAuthorizationManager
La DTD correspondante (jGuardPrincipalsPermissions_x.xx.dtd), doit être dans le même répertoire.-
fileLocation
valeurs
Tout emplacement sur votre système de fichiers.
description
Ce paramètre doit être placé dans la liste des paramètres de l'AccessFilter, située dans le fichier web.xml. Cet emplacement doit commencer par le préfixe "file:///". Vous pouvez utiliser les variables "${java.home}" et ${/} pour avoir une configuration plus flexible.
exemple
..... <init-param> <param-name>fileLocation</param-name> <param-value>file:///C:/jGuardPrincipalsPermissions.xml</param-value> <description>xml file Location</description> </init-param> ....
2. structure de jGuardPrincipalsPermissions.xml
Le fichier jGuardPrincipalsPermissions.xml contient les données d'autorisation:les permissions
La première partie du fichier (<permissions>) contient les déclarations des permissions. Les permissions sont regroupées en domaines (<domain>). Une permission (<permission>) contient :
-
un nom unique (<name>) dans le fichier
-
une description (<description>) pour fournir une infirmation claire
-
un motif (<pattern>) qui contient la "règle de validation" de la permission
-
des paramètres (<parameters>)
-
une référence de protocole(<schemeRef>)
Le champ motif est une expression régulière; donc ce motif peut "couvrir" des ressources multiples. Quand un utilisateur veut atteindre une ressource, l'url demandée par lui sera vérifiée avec l'expression régulière. Si le motif correspond avec la ressource demandée, l'accès sera autorisé. Sinon, l'accès à cette ressource sera refusé.
les principals
La seconde partie du fichier (<principals>) contient les déclarations de principals (ou les rôles, deux mots pour la même signification). Chaque principal (<principal>) a:
-
un nom unique dans le fichier (<name>)
-
and est lié à un nom d'application
-
Chaque principal a des des références sur des permissions (<permissionRef>)
-
et/ou sur des domaines (<domainRef>)
3. exemple de jGuardPrincipalsPermissions
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?> <!DOCTYPE configuration SYSTEM "jGuardPrincipalsPermissions_0.64.dtd"> <configuration> <permissions> <schemes> <scheme> <name>http</name> <default>true</default> </scheme> <scheme> <name>https</name> <default>false</default> </scheme> </schemes> <domains> <domain> <name>public</name> <permission> <name>accessDenied</name> <description>ressource where you are redirected when access to another ressource is denied</description> <pattern>/jGuardExample/AccessDenied.do</pattern> <parameters/> </permission> <permission> <name>accueil</name> <description></description> <pattern>/jGuardExample/Welcome.do</pattern> <parameters/> </permission> </domain> <domain> <name>vip</name> <permission> <name>allAccess</name> <description>full access to any ressource</description> <pattern>/jGuardExample/</pattern> <parameters/> <schemeRef>http</schemeRef> </permission> </domain> </domains> </permissions> <principals> <principal> <name>guest</name> <applicationName>jGuardExample</applicationName> <permissionsRef> <permissionRef name="accessDenied"/> <permissionRef name="accueil"/> </permissionsRef> </principal> <principal> <name>other</name> <applicationName>jGuardExample</applicationName> <permissionsRef/> </principal> <principal> <name>admin</name> <applicationName>jGuardExample</applicationName> <permissionsRef> <domainRef name="public"/> <domainRef name="vip"/> </permissionsRef> </principal> </principals> </configuration>