Geasysecu a été conçu comme un plugin de Petals BPM.
Les domaines de Geasysecu ont été implémentés pour prendre en compte la modélisation de sécurité et de policy selon les standards WS-Security Policy et WS-Policy de OASIS.
- Le domaine de sécurité est le coeur de l’extension de BPMN 2.0, et est destiné à la partie modélisation. Il représente les concepts que l’utilisateur type analyste métier va utiliser pour modéliser la sécurité dans l’éditeur. Le diagramme UML suivant résume son architecture et son interfaçage avec les classes du modèle BPMN.
- Le projet securitypolicy-domain regroupe toutes les classes utiles pour manipuler les assertions de sécurité de WS-Securitypolicy de manière simplifiée. La classe SecurityPolicyContent implémente IPolicyAspect et concentre tous les aspects sécurité. Dans ce diagramme, on notera l’interface Binding qui est là pour permettre l’implémentation de différents mécanismes de sécurité. A ce jour, seul les classes filles d’AsymmetricSymmetricBinding sont implémentées.
Geasysecu a une architecture un peu particulière. GWT propose un mécanisme RPC (propriétaire) pour permettre au client et au serveur de communiquer entre eux qui oblige un recours au design pattern Transfert Object. On a donc trois piles : serveur, client et transfert objects. La figure suivante présente l’architecture serveur plus en détail, avec les librairies utilisées, chaque brique étant un projet Maven.
Enfin, le composant partagé (les Transfert Objects) est découpé en trois lots :
- Le domaine de l’extension : classes représentant les exigences de sécurité et les niveaux associés ;
- Le domaine policy : classes qui permettent de manipuler les fichiers policy côté client ;
- Le domaine securitypolicy, qui regroupe une équivalence sommaire des assertions de WS-SecurityPolicy utilisable côté client.
La pile serveur est constituée principalement du composant policy-server. Ce composant a la charge de manipuler les fichiers policy sur le serveur et de les traduire en transfert objects compatibles avec GWT. Il a aussi la responsabilité de la tâche inverse : convertir des Transfert Objects en fichiers policy. Le point d’entrée de ce composant est l’interface IPolicyRepository: