13.05.2014 Views

these doctorat une architecture de securité

these doctorat une architecture de securité

these doctorat une architecture de securité

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Section 6.1. Création <strong>de</strong>s entités sécurisées<br />

// creation d’<strong>une</strong> regle <strong>de</strong> securite<br />

PolicyRule policyRule = new PolicyRule();<br />

// creation d’un serveur <strong>de</strong> politique et ajout <strong>de</strong>s regles<br />

PolicyRule[] policyRules = { policyRule };<br />

PolicyServer policyServer = new PolicyServer(policyRules);<br />

// chargement du certificat <strong>de</strong> l’objet<br />

// le mot <strong>de</strong> passe du keystore est : "albator"<br />

KeyStore keyStore = KeyStore.getInstance("PKCS12", "BC");<br />

keyStore.load(new FileInputStream("application.p12"),"albator".toCharArray());<br />

// creation du gestionnaire <strong>de</strong> securite<br />

ProActiveSecurityManager psm =<br />

new ProActiveSecurityManager(keyStore,policyServer);<br />

tel-00239252, version 1 - 5 Feb 2008<br />

// creation du noeud sur le runtime<br />

runtime.createLocalNo<strong>de</strong>("no<strong>de</strong>Name",false, psm,"vnName", "jobId");<br />

Si ce paramètre n’est pas spécifié, le mécanisme <strong>de</strong> sécurité récupérera la politique <strong>de</strong> sécurité<br />

<strong>de</strong> l’entité sécurisée appelante et l’imposera comme politique <strong>de</strong> sécurité du futur nœud. Il<br />

en sera <strong>de</strong> même pour l’i<strong>de</strong>ntité du futur nœud qui dépendra du certificat d’application <strong>de</strong> l’entité<br />

appelante.<br />

La sécurisation <strong>de</strong> l’appel <strong>de</strong> métho<strong>de</strong> createLocalNo<strong>de</strong> et le transfert sécurisé <strong>de</strong>s paramètres<br />

sur le runtime distant sont assurés étant donné que le co<strong>de</strong> <strong>de</strong> création du nœud dépend<br />

d’<strong>une</strong> entité sécurisée. Ainsi <strong>une</strong> session sera établie entre l’entité sécurisée appelante et le runtime<br />

distant, et l’appel <strong>de</strong> métho<strong>de</strong> se fera selon la politique <strong>de</strong> sécurité négociée.<br />

6.1.3 L’objet actif sécurisé<br />

Au sein d’un objet actif, la sécurité est implantée <strong>de</strong> manière orthogonale et transparente<br />

au co<strong>de</strong> source <strong>de</strong> l’application. Elle est définie tel un nouveau comportement au sein <strong>de</strong> l’objet<br />

actif. Elle s’insère auprès du body d’un objet actif sous la forme d’un nouveau méta objet, le<br />

gestionnaire <strong>de</strong> sécurité.<br />

Nous avons jusqu’à présent abordé la sécurité comme étant transparente au co<strong>de</strong> <strong>de</strong> l’application.<br />

Il est cependant possible d’instancier un objet sécurisé sans déléguer au mécanisme <strong>de</strong><br />

sécurité le soin <strong>de</strong> créer les objets <strong>de</strong> sécurité nécessaires.<br />

La première étape consiste à créer le serveur <strong>de</strong> politique <strong>de</strong> sécurité. Sa construction requiert<br />

un tableau <strong>de</strong> politique <strong>de</strong> sécurité. Dans l’exemple présenté ici, le serveur ne contiendra qu’<strong>une</strong><br />

seule règle. Cette règle sera <strong>une</strong> règle générique, comme l’autorise le mécanisme <strong>de</strong> sécurité.<br />

Les champs et désignant les entités source et cible sont remplis avec <strong>une</strong> entité<br />

par défaut qui, lors <strong>de</strong> la comparaison avec <strong>une</strong> autre entité, répond toujours vrai. Les champs<br />

correspondant aux attributs <strong>de</strong> communication sont positionnés à leur valeur optionnelle. Tous<br />

les autres champs <strong>de</strong> la règle sont remplis avec les valeurs autorisant les interactions.<br />

// creation d’<strong>une</strong> regle <strong>de</strong> securite<br />

PolicyRule policyRule = new PolicyRule();<br />

// creation d’un serveur <strong>de</strong> politique et ajout <strong>de</strong>s regles<br />

PolicyRule[] policyRules = { policyRule };<br />

PolicyServer policyServer = new PolicyServer(policyRules);<br />

La <strong>de</strong>uxième étape consiste à charger le certificat <strong>de</strong> l’entité. Nous supposerons ici que le<br />

certificat a déjà été généré.<br />

// chargement du certificat <strong>de</strong> l’objet<br />

// le mot <strong>de</strong> passe du keystore est : "albator"<br />

KeyStore keyStore = KeyStore.getInstance("PKCS12", "BC");<br />

keyStore.load(new FileInputStream("application.p12"), "albator".toCharArray());<br />

101

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!