Problème de droits d'une applet java
Résolu/Fermé
A voir également:
- Une application non signée demande un accès illimité au système
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Jeux java itel 5360 ✓ - Forum Jeux vidéo
- Télécharger jeux java gameloft gratuit - Forum Mobile
9 réponses
Bonjour,
bon j'ai trouvé une solution à l'adresse suivante:
https://www.developpez.net/forums/d414328/java/developpement-web-java/autres/applets/applet-signee-j-ai-malgre-exception-jfilechooser/#post2515466
il suffit de rajouter l'instruction:
System.setSecurityManager(null);
lors de l'initialisation de l'applet.
Par contre, les threads créés à partir de l'applet ne sont pas concernés par ces droits (!!!). On peut contourner le problème comme indiqué dans le lien.
Si certains n'aiment pas cette solution, je m'orientais vers le fichier applet.policy qui devait contenir:
grant {
permission java.security.AllPermission;
};
Mais je ne sais pas si c'est possible de mettre ce fichier sur le serveur et faire en sorte que cela soit transparent pour l'utilisateur. Enfin bref, je donne juste une autre piste sans trop savoir où elle mène.
Bon courage!
bon j'ai trouvé une solution à l'adresse suivante:
https://www.developpez.net/forums/d414328/java/developpement-web-java/autres/applets/applet-signee-j-ai-malgre-exception-jfilechooser/#post2515466
il suffit de rajouter l'instruction:
System.setSecurityManager(null);
lors de l'initialisation de l'applet.
Par contre, les threads créés à partir de l'applet ne sont pas concernés par ces droits (!!!). On peut contourner le problème comme indiqué dans le lien.
Si certains n'aiment pas cette solution, je m'orientais vers le fichier applet.policy qui devait contenir:
grant {
permission java.security.AllPermission;
};
Mais je ne sais pas si c'est possible de mettre ce fichier sur le serveur et faire en sorte que cela soit transparent pour l'utilisateur. Enfin bref, je donne juste une autre piste sans trop savoir où elle mène.
Bon courage!
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
30 nov. 2007 à 11:38
30 nov. 2007 à 11:38
salut,
As-tu signé ton fichier jar ?
En le signant, tu autoriseras ton application à lire dans tes fichiers locaux. Ce qui est interdit normalement à cause de la sandbox, mais tu n'as pas les même restrictions de sécurité avec un logiciel comme eclipse :
keytool -genkey -alias toto
jarsigner -signedjar jar_signe.jar jar_a_signer toto
Ca devrait marcher après.
Cdt
As-tu signé ton fichier jar ?
En le signant, tu autoriseras ton application à lire dans tes fichiers locaux. Ce qui est interdit normalement à cause de la sandbox, mais tu n'as pas les même restrictions de sécurité avec un logiciel comme eclipse :
keytool -genkey -alias toto
jarsigner -signedjar jar_signe.jar jar_a_signer toto
Ca devrait marcher après.
Cdt
Salut,
merci pour l'info, je vais tester.
mais petite précision:
lorsque tu écris
jarsigner -signedjar jar_signe.jar jar_a_signer toto
"jar_signe.jar" est la librairie externe que j'utilise
mais "jar_a_signer" c'est quoi?
Merci d'avance
merci pour l'info, je vais tester.
mais petite précision:
lorsque tu écris
jarsigner -signedjar jar_signe.jar jar_a_signer toto
"jar_signe.jar" est la librairie externe que j'utilise
mais "jar_a_signer" c'est quoi?
Merci d'avance
Bon j'ai testé
j'ai créé un jar signé et je l'ai mis dans Z:\appli\jar_signe.jar
lorsque le lance le fichier htm, il me demande si j'accepte la signature numérique.
je clique sur exécuter et là, même problème qu'avant :
java.security.AccessControlException: access denied (java.io.FilePermission ..\Ressource\xxx.xml read)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkRead(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
ce que je ne comprends pas, c'est que lorsque j'utilise la jar (via un .bat), je n'est aucun problème. Mais c'est seulement lorsque j'accède au .jar avec l'applet que j'ai le probleme de droits :(
j'ai créé un jar signé et je l'ai mis dans Z:\appli\jar_signe.jar
lorsque le lance le fichier htm, il me demande si j'accepte la signature numérique.
je clique sur exécuter et là, même problème qu'avant :
java.security.AccessControlException: access denied (java.io.FilePermission ..\Ressource\xxx.xml read)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkRead(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
ce que je ne comprends pas, c'est que lorsque j'utilise la jar (via un .bat), je n'est aucun problème. Mais c'est seulement lorsque j'accède au .jar avec l'applet que j'ai le probleme de droits :(
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
j'ai bien signé mon jar comme indiqué dans le tuto et j'ai bien une demande d'acceptation du certificat lorsque je lance ma page htm.
Mais j'ai toujours la même erreur.
Je me suis donc dit que je vais voir où est lancé l'application, juste pour voir
j'ai ajouté
String plop = System.getProperty("user.dir");
System.out.println("user.dir = "+plop);
Mais là, l'erreur affichée est la suivante :
java.security.AccessControlException: access denied (java.util.PropertyPermission user.dir read)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
at java.lang.System.getProperty(Unknown Source)
...
donc je comprends pas trop. Je les paramètres de restrictions sont trop élevés (je suis sur un ordi d'entrepise).
Quelqu'un a-t-il une solution?
je vais tenter d'exécuter l'applet chez moi même si je n'est pas la base de données, je devrait avoir le droit de lire le user.dir
j'ai bien signé mon jar comme indiqué dans le tuto et j'ai bien une demande d'acceptation du certificat lorsque je lance ma page htm.
Mais j'ai toujours la même erreur.
Je me suis donc dit que je vais voir où est lancé l'application, juste pour voir
j'ai ajouté
String plop = System.getProperty("user.dir");
System.out.println("user.dir = "+plop);
Mais là, l'erreur affichée est la suivante :
java.security.AccessControlException: access denied (java.util.PropertyPermission user.dir read)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
at java.lang.System.getProperty(Unknown Source)
...
donc je comprends pas trop. Je les paramètres de restrictions sont trop élevés (je suis sur un ordi d'entrepise).
Quelqu'un a-t-il une solution?
je vais tenter d'exécuter l'applet chez moi même si je n'est pas la base de données, je devrait avoir le droit de lire le user.dir
Bonjour,
j'ai exactement le même problème que toi, j'ai beau signé mon applet rien à faire.
Ce qui m'étonne c'est que j'ai du faire pour la meme application une applet qui exécute une commande système et dans ce cas signer l'applet résolvait le problème.
On dirait donc que c'est la lecture de fichiers qui pose problème.
Quelqu'un a-t-il une idée sur ça?
j'ai exactement le même problème que toi, j'ai beau signé mon applet rien à faire.
Ce qui m'étonne c'est que j'ai du faire pour la meme application une applet qui exécute une commande système et dans ce cas signer l'applet résolvait le problème.
On dirait donc que c'est la lecture de fichiers qui pose problème.
Quelqu'un a-t-il une idée sur ça?
Bon j'ai un peu avancé:
pour les fichiers, il faut donner le chemin complet :
c:\dossier1\dossier2\ficherALire.txt au lieu de ..\fichierALire.txt
sinon, après correction de ce problème, la nouvelle erreur est un problème de SocketPermission...
donc je vais me résoudre à développer une page php vite fait...
Tiens moi au courant si tu trouves la solution ;)
pour les fichiers, il faut donner le chemin complet :
c:\dossier1\dossier2\ficherALire.txt au lieu de ..\fichierALire.txt
sinon, après correction de ce problème, la nouvelle erreur est un problème de SocketPermission...
donc je vais me résoudre à développer une page php vite fait...
Tiens moi au courant si tu trouves la solution ;)
Merci!!!
ça fonctionne :)
Bon je pense que c'est pas la solution la plus optimale :) Mais bon.
Merci encore
ça fonctionne :)
Bon je pense que c'est pas la solution la plus optimale :) Mais bon.
Merci encore
Bonjours,
J'ai eu le même problème de droit. Cependant moi j'utilise Tomcat, j'ai créé un applet dans le root de mon application. Donc ...Tomcat6.0/webapps/sites.
Dans le fond, tout est sur ce répertoire, donc mon .java et mon .class ainsi que ma page jsp.
Mon applet est sensé mettre une ImageIcon sur un JButton. voici le code:
String[] v = {"q","c","t","p"};
int j = (int)(Math.random() * 3)+1;
String patch = "" + v[j] + "/" + (i) + ".jpg";
JOptionPane.showMessageDialog(null, patch);
Icon bug = new ImageIcon(patch);
bCartes[cpt].setIcon(bug);
bCartes[cpt++].setVisible(true);
Il serait sensé aller chercher l'image à l'emplacement q/1.jpg par exemple. J'ai tester mon code lorsqu'il est sur mon bureau mais sur un serveur tomcat je ne sais pas comment les prendre. Aidez moi svp
J'ai eu le même problème de droit. Cependant moi j'utilise Tomcat, j'ai créé un applet dans le root de mon application. Donc ...Tomcat6.0/webapps/sites.
Dans le fond, tout est sur ce répertoire, donc mon .java et mon .class ainsi que ma page jsp.
Mon applet est sensé mettre une ImageIcon sur un JButton. voici le code:
String[] v = {"q","c","t","p"};
int j = (int)(Math.random() * 3)+1;
String patch = "" + v[j] + "/" + (i) + ".jpg";
JOptionPane.showMessageDialog(null, patch);
Icon bug = new ImageIcon(patch);
bCartes[cpt].setIcon(bug);
bCartes[cpt++].setVisible(true);
Il serait sensé aller chercher l'image à l'emplacement q/1.jpg par exemple. J'ai tester mon code lorsqu'il est sur mon bureau mais sur un serveur tomcat je ne sais pas comment les prendre. Aidez moi svp
Résolu. Sous tomcat6.0 allez sous ...\Apache Software Foundation\Tomcat 6.0\conf et modifiez le : catalina.policy avec les renseignements décrits sous haut. De plus le code que l'on doit ajouter dans l'applet pour rajouter les droits ne fonctionne pas donc modifier le fichier est une meilleur solution.
P.S.: J'avais installé tomcat sur un poste régulier donc sous windows vista pour en rajouter plus à ma cause. Donc à retenir : modifier le catalina.policy et signer le .jar
P.S.: J'avais installé tomcat sur un poste régulier donc sous windows vista pour en rajouter plus à ma cause. Donc à retenir : modifier le catalina.policy et signer le .jar
Bonjour,
j'ai le même problème.
j'arrive a me connecter a ma base oracle sous eclipsse, mais j'ai le message d'erreur quand je lance l'applet sur une page html (sous Firefox ou IE):
java.security.AccessControlException: access denied (java.util.PropertyPermission oracle.net.wallet_location read)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
at java.lang.System.getProperty(Unknown Source)
at oracle.jdbc.driver.OracleDriver$1.run(OracleDriver.java:1427)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.jdbc.driver.OracleDriver.getSystemProperty(OracleDriver.java:1423)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:596)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at article.init(article.java:131)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
merci de me donner une piste.
j'ai le même problème.
j'arrive a me connecter a ma base oracle sous eclipsse, mais j'ai le message d'erreur quand je lance l'applet sur une page html (sous Firefox ou IE):
java.security.AccessControlException: access denied (java.util.PropertyPermission oracle.net.wallet_location read)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
at java.lang.System.getProperty(Unknown Source)
at oracle.jdbc.driver.OracleDriver$1.run(OracleDriver.java:1427)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.jdbc.driver.OracleDriver.getSystemProperty(OracleDriver.java:1423)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:596)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at article.init(article.java:131)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
merci de me donner une piste.