Sécurité et applet

Sécurité et applet - Java - Programmation

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
 

Reply

Marsh Posté le 22-06-2006 à 11:15:03   

Reply

Marsh Posté le 22-06-2006 à 11:36:11    

http://www.ccs.neu.edu/home/kenb/com3337/rmi_tut.html
 
Paragraphe Security
 

Citation :


The message above would occur when an RMI server or client was not allowed to connect to the RMI registry running on the same machine as the server or client.


 
Je pense que c'est ce que tu cherche [:petrus75]
 
(le document a l'air tout de meme assez vieux = voir sur avec les nouveaux SDK il n'y a pas une solution indique)


Message édité par zapan666 le 22-06-2006 à 11:37:53

---------------
my flick r - Just Tab it !
Reply

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

Reply

Marsh Posté le 22-06-2006 à 14:53:16    

:o et le liens il dit quoi le liens

Citation :


However, many Java installations have instituted security policies that are more restrictive than the default. There are good reasons for instituting such policies, and one should not override them carelessly. In particular, if your Java virtual machine already has a security manager and if this security manager does not allow the setSecurityManager method to be invoked, then you will not be able to change security policies other than as allowed by the existing security manager. This is the case for applets running in a browser. In order to protect the client from potentially dangerous applets, the security manager of applets does not allow many operations, including reading and writing local files, as well as changing the security manager.


 

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 [:pingouino]
 
 
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


---------------
my flick r - Just Tab it !
Reply

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
 

Reply

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

Reply

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


Message édité par leonhard le 22-06-2006 à 16:56:32
Reply

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

Reply

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é...

Reply

Marsh Posté le 23-06-2006 à 14:53:43    

Ah pitain cela m'arrange vraiment pas ...:s

Reply

Marsh Posté le 23-06-2006 à 14:53:43   

Reply

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.

Reply

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

Reply

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...

Reply

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 ?

Reply

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" ));

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed