Pergunta

Eu preciso de um applet para abrir um socket e se comunicar com uma escuta servidor em o host local para o qual o applet baixado (a máquina do usuário final).

ao contrário do que eu li sobre a segurança do applet, parece que os applets ainda assinados Não é possível abrir um soquete para um host diferente de onde foram transferidos (na mesma máquina funciona perfeitamente)

Eu certificaram o applet usando -selfcert, assinou usando jarsigner, e ainda, sempre que ele tenta abrir um soquete para um host diferente, eu recebo:

Java.lang.Exception: java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:9999 connect,resolve)

Eu até tentei mudar o arquivo de política Java, embora com applets assinados não é obrigado a fazê-lo:

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

O que é o negócio com applets sigend, eles podem connet a um host diferente ou não?

Foi útil?

Solução

Sim, quando você carrega o seu applet, se você optar por aceitar o seu certificado e confiar nele, que é concedido AllPermission, que inclui SocketPermission. Eu escrevi um applet assinado antes que se conecta a um host diferente daquele a partir do qual ele foi carregado. Você poderia tentar temporariamente mudar o seu arquivo de política java apenas para ter

grant {
  permission java.security.AllPermission;
};
  • Procure no seu arquivo de política para ver se ele define quaisquer outros locais policy.url, talvez eles estão interferindo.
  • Verifique as configurações do seu navegador para javascript talvez.
  • Certifique-se de que você aceite o certificado para o applet e que é instalado à sua lista de certificados de site.
  • Certifique-se a linha codeBase concessão que você tem é o mesmo que o código base no manifesto do seu applet.
  • Você poderia tentar imprimir a lista de permissões que seu applet tem antes de tentar a conexão.
  • Você poderia tentar conceder programaticamente AllPermission de dentro do applet.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top