Gestion des groupes
uPortal peut utiliser plusieurs modes de gestion ou de stockage de groupes. Ces modes sont activés dans le fichier uportal-impl/src/main/resources/properties/groups/compositeGroupServices.xml
local
C'est la méthode de base : les groupes sont gérés et stockés en interne dans la base du portail. Ils peuvent être constitués d'utilisateurs ou de canaux (l'un ou l'utre pour chaque groupe).
Chaque groupe est référencé dans la table UP_GROUP
Les membres des groupes sont enregistrés dans la table UP_GROUP_MEMBERSHIP
On gère ces groupes et leurs membres avec l'interface de gestion de groupes group manager
PAGS (person attributes group store)
Avec cette méthode, on ne gère pas physiquement les groupes en base mais on évalue dynamiquement à quels groupes un utilisateur appartient lorsqu'il se connecte. Cette évaluation est faite en fonction des attributs de l'utilisateur.
Le principe est le suivant :
Les groupes PAGS sont référencés dans le fichier uportal-impl/src/main/resources/properties/groups/PAGSGroupStoreConfig.xml
Quand un utilisateur se connecte, le portail évalue, pour chaque groupe du fichier PAGSGroupStoreConfig.xml, si l'utilisateur appartient ou non à ce groupe en fonction des critères d'appartenance indiqués dans les balises selection-test et members.
- selection-test détermine les utilisateurs directs d'un groupe
- members détermine les sous-groupes d'un groupe
Le fichier PAGSGroupStoreConfig.xml
<Group-Store> <group> <group-key>TousPers</group-key> <group-name>LDAP Tout le personnel</group-name> <group-description>Tout le personnel de l'etablissement issu de LDAP</group-description> <selection-test> <test-group> <test> <attribute-name>eduPersonAffiliation</attribute-name> <tester-class>org.jasig.portal.groups.pags.testers.StringEqualsIgnoreCaseTester</tester-class> <test-value>faculty</test-value> </test> </test-group> <test-group> <test> <attribute-name>eduPersonAffiliation</attribute-name> <tester-class>org.jasig.portal.groups.pags.testers.StringEqualsIgnoreCaseTester</tester-class> <test-value>staff</test-value> </test> </test-group> <test-group> <test> <attribute-name>eduPersonAffiliation</attribute-name> <tester-class>org.jasig.portal.groups.pags.testers.StringEqualsIgnoreCaseTester</tester-class> <test-value>employee</test-value> </test> </test-group> <test-group> <test> <attribute-name>eduPersonAffiliation</attribute-name> <tester-class>org.jasig.portal.groups.pags.testers.StringEqualsIgnoreCaseTester</tester-class> <test-value>researcher</test-value> </test> </test-group> </selection-test> <members> <member-key>Enseignants</member-key> </members> </group> ... </Group-Store>
Group
Identifiant du groupe
selection-test
Contient l'ensemble des tests à effectuer pour évaluer l'appartenance d'un utilisateur à ce groupe en fonction de ses attributs. L'utilisateur qui répond aux tests de selection-test est appelé "membre direct" d'un groupe (memberOf)
test-group
Regroupe des test d'appartenance : tous les tests dans la même balise test-group sont ET-ifiés (associés avec un ET logique) : ils doivent être tous validés pour que le test retourne VRAI
S'il y a plusieurs test-group, ils sont OU-ifiés (associés avec un OU logique)
test
- attribute-name : L'attribut uPortal testé
- tester-class : La classe java utilisée comme opérateur pour le test.
- test-value : La valeur comparée à l'attribut
Les classes utilisables sont :
IntegerEQTester |
attribute-name et test-value sont convertis en ints. attribute-name doit être égal à test-value. |
IntegerGETester |
attribute-name supérieur ou égal à test-value. |
IntegerGTTester |
attribute-name supérieur à test-value. |
IntegerLETester |
attribute-name inférieur ou égal à test-value. |
IntegerLTTester |
attribute-name inférieur à test-value. |
RegexTester |
attribute-name doit correspondre à l'expression régulière indiquée dans test-value. |
StringEqualsIgnoreCaseTester |
Comparaison de chaînes en ignorant la casse. |
StringEqualsTester |
Comparaison de chaînes. |
ValueExistsTester |
VRAI si attribute-name possède une valeur. |
ValueMissingTester |
VRAI si attribute-name est nul ou qu'aucune de ses valeurs n'est égale à test-value. |
PS : les valeurs d'un attribut multi-valué sont testées successivement ; il suffit que une de ses valeurs réponde au test pour qu'il soit VRAI
members
Indique, dans les balises member-key, les sous-groupes de ce groupe. Un utilisateur qui appartient à l'un de ces sous-groupes est appelé "membre indirect" d'un groupe (deepMemberOf).
Avantages
L'évaluation est faite à la connexion, utilisateur par utilisateur => la taille des groupes n'influe pas sur les performances
Inconvénients
On ne peut pas afficher la liste des utilisateurs membres d'un groupe
Références
http://www.ja-sig.org/wiki/display/GAP/uPortal+PAGS+documentation