Excepção SecurityExceptionEx executar uma aplicação Java

Traduções de Artigos Traduções de Artigos
Artigo: 175622 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Sintomas

Quando executa uma aplicação Java, o Gestor de segurança lança um dos seguintes excepções:
com.MS.Security.SecurityExceptionEx[ClassName.methodname]
- ou -
com.MS.Security.SecurityExceptionEx[Host]
- ou -
com.MS.Security.SecurityExceptionEx[Unknown]
- ou -
Java.lang.SecurityException: não foi autorizado J/Direct método para utilização no nome de um autor da chamada não fidedigno.

Causa

  • SecurityExceptionEx[methodname.classname] ocorrerá se a aplicação tenta efectuar uma operação fidedigna e não é fidedigna.
  • Um SecurityExceptionEx [anfitrião] ocorrerá se:
    • O navegador da Web chamado um método que efectua uma operação fidedigna e esse método não asserção primeiro a permissão para efectuar a operação fidedigna. Esta situação ocorrerá se a aplicação efectua operações de fidedignas a aplicação predefinida construtor, init(), start(), stop() ou destroy() método sem primeiro declarando a sua permissão.
    • O Web browser tenta invocar arquivar ficheiros do arquivos, cabbase ou armários de parâmetros que não se encontram relativamente ao URL de base de código. Esta situação pode acontecer se a aplicação está a ser executada a partir de uma localização de base de código e arquivar ficheiros estão localizados noutra localização diferente do que a base de código.
  • Um SecurityExceptionEx [desconhecido] ocorrerá se o motor de script chamado um método que efectua uma operação fidedigna e esse método não asserção primeiro a permissão para efectuar a operação fidedigna. Esta situação ocorrerá se a aplicação tem um método público chamado pelo VBScript ou JScript e que método executa operações fidedignas sem primeiro declarando as respectivas permissões.
  • A "java.lang.SecurityException: não foi autorizado J/Direct método para utilização no nome de um autor da chamada não fidedigno" irá ocorrer se o motor de browser ou script da Web chamado um método que efectua uma chamada J/Direct e esse método não asserção primeiro a permissão para efectuar a operação fidedigna.

Resolução

Se um SecurityExceptionEx[methodname.classname] ocorrer, terá de assinar a aplicação para a activar executar operações fora do sandbox Java. Para mais informações, consulte a documentação no Microsoft SDK para Java, tal como indicado na secção "Referências" deste artigo. ( Nota : se tem de assinar o ficheiro CAB com o adequado permissões. - baixa ou - LowX permissão irá garantir tem acesso apropriado ou poderá iniciar sessão com as permissões adequadas granular utilizando um ficheiro ini passado para Signcode.exe).

Se ocorrer um SecurityExceptionEx [anfitrião], pode efectuar um dos seguintes procedimentos:
  • Se tiver a certeza do autor da chamada não danos se for efectuada a operação fidedigna, as resoluções são os mesmos como para SecurityExceptionEx [desconhecido] (consulte o seguinte desta lista com marcas de parágrafo).
  • Garantem que os ficheiros de arquivo referidos em tags de parâmetro a arquivos, cabbase ou armários localizados relativo ao código base para a aplicação.
Se um SecurityExceptionEx [anfitrião] SecurityExceptionEx [desconhecido], ou "java.lang.SecurityException: método J/Direct não foi autorizado para utilização no nome de um autor da chamada não fidedigno" e é-se o autor da chamada não danificar se for efectuada a operação fidedigna, pode efectuar um dos seguintes procedimentos:
  • A permissão utilizando a classe PolicyEngine de asserção. ( Nota : A duração de PolicyEngine.assertPermission() é igual a duração do método no qual é chamado. Uma vez o método que afirma devolve a permissão, terá re-assert permissões conforme necessário.)
  • Expandir um thread separado para executar a operação fidedigna, conceder a permissão de thread para executar a operação.

Ponto Da Situação

Este comportamento ocorre por predefinição.

Mais Informação

No Microsoft virtual machine (Microsoft VM) (compilação 2252 ou posterior) que está incluída no SDK para Java e o Internet Explorer 4.0 e posterior, o Gestor de segurança agora percorre a pilha de chamadas quando uma aplicação é executada de um ficheiro cab assinado. Este comportamento é novo nesta compilação da Microsoft VM e ajuda a garantir que o autor da aplicação é conhecer os riscos de segurança de código não fidedigno manipular a respectiva aplicação. Por declarando permissão de uma aplicação, o programador está confirmar que compreender os riscos de segurança e tiver efectuado todas as medidas possíveis proteger o sistema do utilizador.

Quando são executadas operações fidedignas, o Gestor de segurança assegura o objecto for fidedigno para executar a operação e, em seguida, a pilha de chamadas é pesquisada para assegurar que todas as chamadas também são fidedignas para efectuar a chamada. Um SecurityExceptionEx [anfitrião] ou [desconhecido] SecurityExceptionEx excepção irá ser accionada se for encontrado um autor da chamada não fidedigno na pilha de chamadas.

O método assertPermission(PermissionId pid) na classe PolicyEngine impedirá o Gestor de segurança de percorrer a pilha de chamadas, activar a aplicação executar operações fidedignas, mesmo quando os métodos a pilha de chamadas não são fidedignos. Só deve asserção permissão se tiver a certeza de que um membro da pilha de chamadas não fidedigno não pode danificar o sistema de utilizadores. Um local lógico para as permissões de asserção é no início do método que está a efectuar a chamada fidedigna. Depois deste método retorna, métodos públicos subsequentes chamados a partir de fora a máquina virtual também terá asserção permissão antes de efectuar chamadas fidedignas.

A classe PermissionID predefiniu permissões específicas, tais como NETIO FILEIO e por aí em diante. Para conceder permissões totais para a aplicação utilizar a permissão de sistema. Isto é necessário para chamar J/Direct, COM e métodos nativos.

A aplicação de exemplo seguinte demonstra a ler um carácter de uma página Web, que é uma operação fidedigna. Neste exemplo tem de ser fidedigna, colocando o ficheiro num ficheiro cab assinado, executar o projecto a partir de Developer Studio, ou colocando a classe no classpath:
import com.ms.security.*;

import java.applet.Applet;
import java.net.*;
import java.io.*;
import java.awt.*;

public class myApplet1 extends Applet {
  TextField message=null;

  public myApplet1() {
    message=new TextField();
    setLayout(new BorderLayout());
    add("Center",message);
  }

  public void init()
 {
    /*
      Our init function needs to read a character from a URL, which is a
      trusted operation.  We assert NET permission to stop the stack
      crawling since the Web page isn't trusted.  The applet must be
      signed so the init() function has permission to perform net
     operations.
   */ 
    try {
      if (Class.forName("com.ms.security.PolicyEngine") != null) {
        PolicyEngine.assertPermission(PermissionID.NETIO);
      }
    } catch (Throwable cnfe) {
    }

    try {
      URL url = new URL("http://www.microsoft.com/");
      DataInputStream dis;
      dis = new DataInputStream(url.openConnection().getInputStream());
      dis.readChar();
      message.setText("Read character.");
    } catch (MalformedURLException mue) {
      message.setText("MalformedURL");
      mue.printStackTrace();
    } catch (Throwable t) {
      message.setText(t.toString());
      t.printStackTrace();
    }
  }
}
				

Referências

Para mais informações sobre como utilizar o pacote com.ms.security e para informações sobre como assinar um ficheiro CAB de Java, consulte a documentação incluída com o Microsoft SDK para Java. Para mais informações, visite o seguinte Web site da Microsoft:
http://www.microsoft.com/mscorp/java/
COMO: Criar o código de Java fidedigno no Internet Explorer
Para informações de suporte sobre Visual J ++ e o SDK para Java, visite o seguinte Web site da Microsoft:
http://www.microsoft.com/java

Propriedades

Artigo: 175622 - Última revisão: 14 de junho de 2006 - Revisão: 6.1
A informação contida neste artigo aplica-se a:
  • Microsoft Software Development Kit for Java 2.02
  • Microsoft Software Development Kit for Java 4.0
  • Microsoft Software Development Kit for Java 2.01
  • Microsoft Software Development Kit for Java 2.02
  • Microsoft Software Development Kit for Java 3.0
  • Microsoft Software Development Kit for Java 3.1
  • Microsoft Software Development Kit for Java 3.2
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer 5.01
  • Microsoft Virtual Machine for Java
Palavras-chave: 
kbmt kbcode kbfaq kbprb KB175622 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 175622

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com