Sécurité et applet - Java - Programmation
Marsh Posté le 22-06-2006 à 11:36:11
http://www.ccs.neu.edu/home/kenb/com3337/rmi_tut.html
Paragraphe Security
Citation : |
Je pense que c'est ce que tu cherche
(le document a l'air tout de meme assez vieux = voir sur avec les nouveaux SDK il n'y a pas une solution indique)
Marsh Posté le 22-06-2006 à 14:41:32
Ok merci
Mais j'ai regardé avec les nouveaux SDK et disons qu'ils expliquent que je dois dans mon fichierjava.policy.applet mettre une nouvelle ligne avec grant ( ce que j'ai fait plus haut) mais ils n'expliquent pas d'autres choses, donc j'ai toujours ce problème
Marsh Posté le 22-06-2006 à 14:53:16
et le liens il dit quoi le liens
Citation : |
Citation : For example, if you find that your "Hello, World!" program refuses to connect to the registry, then you should override the checkConnect methods. There are two checkConnect methods |
J'ai essaye de lire le reste bon courage
TIPS : Il y a un bureau dans le batiment ou tu es ou il y a un gars qui s'y connais en RMI / Security / Java
Marsh Posté le 22-06-2006 à 15:19:36
tu peux nous montrer le fichier java.applet.policy en entier ? Il faudrait vérifier dans ton applet si tu as bien les permissions indiquées dans le policy file. Pour une applic, il suffirait de la démarrer avec -Djava.security.debug=all, mais pour une applet c'est plus compliqué je penses
Marsh Posté le 22-06-2006 à 15:50:51
voici mon fichier java.applet.policy:
grant {
permission java.security.AllPermission;
permission java.net.SocketPermission "*:1024-65535","connect,accept,resolve";
};
lorsque je lance mon serveur RMi dans ma ligne de commande j'ai cela :
-Djava.security.policy=bin/java.policy.applet
Merci pour votre aide
Marsh Posté le 22-06-2006 à 16:55:17
euh, attends, le message d'erreur que tu nous as montré, c'est le serveur ou le client qui le génère ? parce que normalement, sans permission particulière, une applet ne peut se connecter que sur le serveur qui l'a envoyée et seulement dans son codebase si je me souvient bien. Donc c'est aussi le client qui a besoin de permissions. De plus, dès que dans un bloc grant tu as un AllPermission, le reste est purement décoratif
Marsh Posté le 22-06-2006 à 17:08:19
Mon message d'erreur c'est mon client (ie mon applet ici) qui me le genere
Marsh Posté le 22-06-2006 à 17:16:03
donc c'est bien ce que je disais, il faut lancer l'applet avec le policy file ! Mais je ne sais pas comment on fait cela depuis un browser. Il y a qq temps, certains browser prenaient le contenu d'un fichier .java.security dans le home de l'utilisateur, mais je crois que depuis les browser ont fermé ce trou de sécurité...
Marsh Posté le 23-06-2006 à 15:19:23
J'ai demandé à un de mes enseignants, il me parle modifier la
politique de securite du navigateur. Ok mais le problème c'est que l'application est destinée à tourner sur d'autre machine que la mienne, donc ca va poser un problème.
Marsh Posté le 23-06-2006 à 15:25:26
Bon apparament une solution moins chiante, serait de signé l'applet, je vais le faire et voir le résultat
Marsh Posté le 26-06-2006 à 10:06:49
Bon la signature permet d'eviter l'exception, mais par contre mon applet tourne dans le vide. Dans mon au moment ou je fais un registry.lookup("Nom de mon remote objeect" ), cela tourne dans le vide comme si il ne trouvait pas mon remote object.
Si vous avez une solution, je suis preneur, car je ne vois vraiment pas comment faire...
Marsh Posté le 26-06-2006 à 10:24:09
tu précises pas d'url pour le lookup ? juste le nom de l'objet remote ?
Marsh Posté le 26-06-2006 à 10:28:14
ouais juste le nom de l'objet remote que je rédupere dans les param de mon applet:
registry.lookup(getParameter("Log" ));
Marsh Posté le 22-06-2006 à 11:15:03
Bonjour voila j'ai un leger de problème de sécurité
Je veux me connecter à mon serveur RMI sur un port que je spécifie, 1099 par exemple avec :
Registry registry = LocateRegistry.getRegistry(port);
mais il me génére l'exception suivante : java .security.AccessContrilException:accss denied (java.net.SocketPermission 1099:1099 connect,resolve)
J'ai donc mis dans mon fichier java.policy.applet la ligne suivante :
permission java.net.SocketPermission "*:1024-65535","connect,accept,resolve";
Mais rien y fait j'ai toujours l'exception et je ne vois pas comment passer outres cela ...
Merci de votre aide