these doctorat une architecture de securité
these doctorat une architecture de securité
these doctorat une architecture de securité
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