Applet Assinado x Permissões de Acesso(java.lang.RuntimePermission createClassLoader)

6 respostas
A

Sou novo por aqui e to com o seguinte problema:

tenho um applet assinado por um certificado de testes. Qdo eu rodo esse applet dentro do Eclipse, tudo funciona.

Mas quando tento rodar no browser, tenho as seguintes exceções:

java.lang.ExceptionInInitializerError	at org.apache.commons.discovery.jdk.JDKHooks.(JDKHooks.java:75) at org.apache.commons.discovery.tools.DiscoverSingleton.find(DiscoverSingleton.java:412) at org.apache.commons.discovery.tools.DiscoverSingleton.find(DiscoverSingleton.java:378)	at org.apache.axis.components.logger.LogFactory$1.run(LogFactory.java:45)

()

Caused by: java.security.AccessControlException: access denied (java.lang.RuntimePermission createClassLoader)

at java.security.AccessControlContext.checkPermission(Unknown Source)

at java.security.AccessController.checkPermission(Unknown Source)

()

Procurando pela internet verifiquei que este problema pode ser contornando criando um arquivo de políticas de segurança. Exibindo a página utilizando o AppletViewer, passando o arquivo de segurança criado o applet também funciona.

O arquivo de segurança é o seguinte:

grant {

permission java.security.AllPermission;

};

A linha de comando foi a seguinte:
appletviewer -J-Djava.security.policy=security.txt applet_teste.asp

Minha dúvida, portanto, é a seguinte:
Como fazer para o applet rodar no browser utilizando um arquivo de política de segurança pré-definido por mim, e não utlizar as políticas do usuário?
Lembrando que será um applet assinado.

Agradeço as ajudas.
Valeu

6 Respostas

T

a) Se ele foi assinado por um certificado de testes, compre um certificado de verdade (é caro, heim!), se esse applet precisa ser usado em aplicações comerciais e não precisar de nenhuma configuração adicional pelo usuário.
b) Se mesmo assinado por um certificado de testes, ele estiver precisando de um arquivo de “policy”, há alguma coisa errada no seu “setup”.
Não é possível mandar o arquivo de “policy” via Internet automaticamente; o usuário precisaria instalá-lo no browser usando alguma mágica federal.
Eu sei que dependendo do que você quer fazer, mesmo assinando um applet não é possível fazer certas coisas. Por exemplo, no método “init” as permissões são muito mais reduzidas que no “event handler” de um botão que o applet crie.

A

Obrigado pela resposta…
Mas conseguimos resolver o problema.

É que o applet dependia de alguns outros JARs, e estes não estavam assinados.
Assim que assinei esse problema foi resolvido.

Valeu aê

M

ola, estou com o mesmo problema, assinatura de um .jar e permissao de acesso …

Caused by: java.security.AccessControlException: access denied (java.lang.RuntimePermission createClassLoader)

no meu caso estou chamando um relatorio (.jasper) feito no ireport, assinei meu jar apenas e estou com duvidas sobre a permissao de arquivos …

na minha maquina servidor, onde hospedo o site, onde fica meu jnlp, meu jar assinado X a maquina do cliente …
esse arquivo policy deve estar aonde, no servidor ou no cliente ??

mister_m

É necessário assinar todos os jars.

M

consegui assinar o jar e disponibilizar para meu cliente, mas tenho que editar o arquivo .policy, o que fica inviavel, pois tenho clientes no estado inteiro, o que eu faco nesse caso …

antoniopopete

Eu estou com problema pois seguindo alguns tutoriais sai criando várias assinaturas, eagora ele diz que já existe.
E não sei o que fiz de errado, nem como apagar.
Alguma sugestão?

Criado 3 de maio de 2007
Ultima resposta 30 de mai. de 2008
Respostas 6
Participantes 5