Tous droits réservés - © Copyright 2000-2001 Neoxia S.A.
autre dossier et appuie sur le bouton Write, une
exception AccessControlException est levée. Tout
fonctionne comme prévu : ce qui est permis est
possible, ce qui n'est pas permis, n'est pas possible.
Exemple d'une application
Nous allons utiliser une application en tout point
similaire à l'Applet précédente, à ceci près, qu'il s'agit
maintenant d'une application et non plus d'une Applet.
Tous les fichiers nécessaires au bon déroulement de
l'exemple se trouvent dans le répertoire
C:\security\application\.
Le fichier ApplicationExample.java contient le code de
l'application qui a été compilée. L'application est livrée
sous forme d'un fichier JAR baptisé Application
Example.jar.
Nous allons procéder en 3 étapes et expliquer chaque
fois ce qui se produit. Auparavant lancer une fenêtre de
ligne de commande et se placer dans le dossier
C:\security\application\.
• Lancer ApplicationExample1.bat (voir listing 6).
Appuyer sur le bouton Write, tout de passe sans
problème, le fichier est bien créé. Saisir un autre
dossier, et appuyer de nouveau sur le bouton Write,
tout se passe également sans problème, le fichier est
bien créé.
java -classpath ApplicationExample.jar ApplicationExample
> listing 6 : ApplicationExample1.bat
En fait, dans le cas présent, aucun gestionnaire de
sécurité n'est activé, l'application a donc le droit de faire
tout ce qu'elle veut.
• Dans cette deuxième étape, nous allons activer un
gestionnaire de sécurité. Lancer Application
Example2.bat (voir listing 7). Appuyer sur le bouton
Write, une exception AccessControlException est
levée.
java -Djava.security.manager
-classpath ApplicationExample.jar ApplicationExample
> listing 7 : ApplicationExample2.bat
Dans le cas présent, un gestionnaire de sécurité est
activé. En l'absence d'indications supplémentaires, c'est
la politique de sécurité par défaut qui est activée, c'est à
dire le bac à sable.
• Dans cette troisième et dernière étape, nous allons
activer une gestionnaire de sécurité et rendre le bac à
sable moins restrictif par ajout d'une permission. Nous
utiliserons pour cela le fichier Application
Example.policy (voir listing 8).
Le fichier ApplicationExample.policy donne à tout
code situé dans le fichier JAR C:\security
\application\ApplicationExample.jar, la permission
d'écrire le fichier Word.txt dans le dossier
C:\security\data\.
grant
codeBase"file:///C:/security/application/ApplicationExample.jar
"{
permission java.io.FilePermission
"C:\\security\\data\\Word.txt", "write";
};
> listing 8 : ApplicationExample.policy
Lancer ApplicationExample3.bat (voir listing 9),
appuyer sur le bouton Write, tout se passe sans
problème, et le fichier Word.txt est effectivement écrit
dans le dossier.
java -Djava.security.manager
-Djava.security.policy=ApplicationExample.policy
-classpath ApplicationExample.jar
ApplicationExample
> listing 9 : ApplicationExample3.bat
Applet et application
Dans le cas d'une Applet, un gestionnaire d'application
est démarré d'office par le Java Plugin ou l'Applet
Viewer. En revanche dans le cas d'une application, il est
necéssaire d'activer un gestionnaire de sécurité de
manière volontaire. Dans tous les cas, que ce soit une
application ou une Applet, les mêmes mécanismes de
sécurité sont utilisés, et la politique de sécurité est
déterminée de la même manière.
Un mot sur Java Web Start
Idéalement, on devrait démarrer toute application Java
téléchargée sous le contrôle d'un gestionnaire de
sécurité, dans la pratique ce n'est pas forcément très
évident, ni très pratique.
Il existe pourtant un solution élégante et efficace offerte
par le produit Java Web Start disponible récemment.
Lorsqu'une application est téléchargée grâce à cette
technologie, elle est automatiquement démarrée sous le
contrôle d'un gestionnaire de sécurité. Ce dernier est un
peu particulier. En effet, chaque fois que l'application
requiert une permission, l'utilisateur est consulté pour
savoir si oui ou non, il désire accorder cette permission
(voir figure 5). Chaque demande est accompagnée d'une
petite explication claire qui montre bien les enjeux de la
sécurité.
Java Web Start présente bien d'autres avantages, dont
l'intérêt dépasse le cadre de cet article : mise à jour
automatique de l'application, téléchargement auto-
matique de la machine virtuelle adaptée, etc.
> Figure 4 : Execution de AppletExample2.bat.