Question

J'ai besoin d'un applet pour ouvrir un socket et communiquer avec un serveur à l'écoute. l'hôte local sur lequel l'applet a été téléchargé (la machine de l'utilisateur final).

contrairement à ce que j'ai lu sur la sécurité des applets, il semble que même les applets signés impossible d'ouvrir un socket sur un hôte différent à partir duquel ils ont été téléchargés (sur la même machine, cela fonctionne parfaitement)

J'ai certifié l'applet à l'aide de -selfcert, l'ai signée à l'aide de jarsigner, et toujours il essaie d'ouvrir un socket vers un autre hôte, je reçois:

Java.lang.Exception: java.security.AccessControlException: accès refusé (java.net.SocketPermission 127.0.0.1:9999 connexion, résolution)

J'ai même essayé de modifier le fichier de règles Java, bien que cela ne soit pas obligatoire avec les applets signés:

grant codeBase " http: // applethost: 8080 / socket " {     permission java.security.AllPermission;     permission java.lang.RuntimePermission " usePolicy " ;; };

Quel est le problème avec les applets sigend, peuvent-ils se connecter à un autre hôte ou non?

Était-ce utile?

La solution

Oui, lorsque vous chargez votre applet, si vous choisissez d'accepter son certificat et de lui faire confiance, AllPermission, qui inclut SocketPermission, lui est attribué. J'ai déjà écrit un applet signé qui se connecte à un hôte autre que celui à partir duquel il a été chargé. Vous pouvez essayer de modifier temporairement votre fichier de stratégie Java afin d’avoir

grant {
  permission java.security.AllPermission;
};
  • Recherchez dans le fichier de stratégie s'il définit d'autres emplacements policy.url, peut-être qu'ils interfèrent.
  • Vérifiez les paramètres de votre navigateur pour javascript peut-être.
  • Assurez-vous que vous avez accepté le certificat pour l'applet et qu'il est installé dans votre liste de certificats de site.
  • Assurez-vous que la ligne Grant CodeBase que vous avez est identique à la base Code dans le manifeste de votre applet.
  • Vous pouvez essayer d’imprimer la liste des autorisations dont dispose votre applet avant d’essayer de vous connecter.
  • Vous pouvez essayer d'accorder AllPrermission par programme à partir de l'applet.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top