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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Section 3.5. La plateforme .NET<br />

}<br />

La sécurité impérative est implémentée directement dans le co<strong>de</strong>. Les programmeurs entreprennent<br />

<strong>de</strong>s actions <strong>de</strong> sécurité par programme, et l’autorisation est accordée ou refusée selon<br />

l’état <strong>de</strong> la pile <strong>de</strong> sécurité. Lorsqu’<strong>une</strong> métho<strong>de</strong> émet <strong>une</strong> <strong>de</strong>man<strong>de</strong> d’accès à un fichier spécifique,<br />

par exemple, cette <strong>de</strong>man<strong>de</strong> peut échouer si l’appelant <strong>de</strong> la métho<strong>de</strong> (ou tout appelant <strong>de</strong><br />

l’appelant) n’a pas reçu les autorisations nécessaires. La sécurité impérative étant implémentée<br />

par programme, les besoins en fonctionnalités dynamiques peuvent être satisfaits. La sécurité<br />

impérative est adaptée lorsque les autorisations ou les informations nécessaires ne sont connues<br />

qu’au moment <strong>de</strong> l’exécution <strong>de</strong> l’application.<br />

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

void Method()<br />

{<br />

// on recupere le principal associe a la Thread courante<br />

GenericPrincipal myPrincipal = Thread.CurrentPrincipal;<br />

bool isInRole = myPrincipal.IsInRole("Responsable");<br />

if ( isInRole )<br />

{<br />

// co<strong>de</strong> effectue si l’appartenance <strong>de</strong> l’utilisateur<br />

// au role est confirmee<br />

}<br />

}<br />

3.5.2 Exemple<br />

Pour la création <strong>de</strong> notre application "journal intime", nous utilisons .NET Remoting l’environnement<br />

pour applications distribuées <strong>de</strong> la plateforme .Net.<br />

À ce titre, son rôle consiste à fournir toute l’infrastructure nécessaire à la distribution d’objets<br />

à l’ai<strong>de</strong> <strong>de</strong> divers protocoles comme TCP ou SOAP. Si Remoting présente sur le papier <strong>une</strong> infrastructure<br />

soli<strong>de</strong>, la construction d’<strong>une</strong> <strong>architecture</strong> n-tiers expose quelques lac<strong>une</strong>s qui semblent<br />

pourtant essentielles dans la création d’<strong>une</strong> application répartie. Nos remarques concernent tout<br />

d’abord la création <strong>de</strong>s proxies vers les objets distants qui requiert le déploiement <strong>de</strong> l’assembly<br />

complète du serveur au sein <strong>de</strong> l’environnement du client. La <strong>de</strong>uxième remarque concerne l’absence<br />

d’un service <strong>de</strong> nommage qui impose la prise en charge <strong>de</strong> la localisation du serveur par le<br />

co<strong>de</strong> <strong>de</strong> l’application cliente. Heureusement, il est possible <strong>de</strong> paramétrer la localisation au sein<br />

<strong>de</strong> fichiers <strong>de</strong> configuration externes.<br />

.Net Remoting n’offre pas nativement <strong>de</strong> mécanismes <strong>de</strong> sécurité intégré, leur gestion est généralement<br />

déléguée à un serveur IIS Internet Information Server et à l’utilisation du protocole<br />

HTTPS. Cependant, dans ce cas précis, nous ne voulons pas nous reposer sur ce serveur afin<br />

d’avoir <strong>une</strong> application distribuée autonome pouvant gérer ses propres mécanismes <strong>de</strong> sécurité.<br />

La propagation d’un contexte <strong>de</strong> sécurité d’<strong>une</strong> application cliente doit donc être réalisée <strong>de</strong> façon<br />

ad-hoc. Cette approche est possible grâce à la structure d’<strong>une</strong> application utilisant .Net Remoting<br />

(figure 3.13). Entre l’objet appelant et l’objet appelé, il existe un ensemble d’objets intermédiaires<br />

permettant <strong>de</strong> masquer la distribution <strong>de</strong> l’objet serveur (Remote Proxy) mais aussi d’effectuer<br />

<strong>de</strong>s traitements personnalisés sur les messages échangés (MessageSink). Les MessagesSink se<br />

composent d’<strong>une</strong> partie cliente et d’<strong>une</strong> partie serveur.<br />

Quand un utilisateur déploie <strong>une</strong> application serveur, il peut référencer un fichier <strong>de</strong> configuration<br />

lui permettant tout d’abord <strong>de</strong> décrire son application mais aussi d’affiner son comportement<br />

notamment en précisant les divers MessageSink <strong>de</strong>vant être utilisés.<br />

Ingo Rammer, dans son ouvrage Advanced .NET Remoting [101] propose <strong>une</strong> gestion personnalisée<br />

<strong>de</strong> l’authentification basée sur l’introduction <strong>de</strong> ces intercepteurs spécialisés entre les<br />

objets communicants ainsi que sur l’utilisation d’un proxy modifié afin <strong>de</strong> capturer le contexte <strong>de</strong><br />

sécurité <strong>de</strong> l’appelant. Si l’adaptabilité du mécanisme se révèle bonne via l’utilisation <strong>de</strong> fichiers<br />

externes, elle n’en <strong>de</strong>meure pas moins statique, le fichier <strong>de</strong> configuration d’un client <strong>de</strong>vant être<br />

modifié à chaque fois que la configuration du serveur est modifiée.<br />

45

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

Saved successfully!

Ooh no, something went wrong!