Incluindo o Arquivo was.policy em Aplicativos para Segurança Java 2
Um aplicativo pode precisar de um arquivo was.policy se ele acessar recursos que requerem mais permissões do que as concedidas no arquivo app.policy padrão.
Sobre Esta Tarefa
O arquivo de critérios padrão para todos os aplicativos é especificado no arquivo app.policy. Esse arquivo é fornecido pela segurança do produto, é comum a todos os aplicativos e não pode ser alterado. Inclua quaisquer novas permissões requeridas para um aplicativo no arquivo was.policy.
O arquivo app.policy fornecido pelo WebSphere Application Server reside em app_server_root/config/cells/profile/profile_name/config/cell_name/nodes/node_name/app.policy. O conteúdo do arquivo app.policy é apresentado no exemplo a seguir:
// As seguintes permissões aplicam-se a todos os componentes do aplicativo.
grant codeBase "file:${application}" {
// As seguintes permissões são requeridas pelo JavaMail
permission java.io.FilePermission "
${was.install.root}${/}lib${/}activation-impl.jar",
"read";
permission java.io.FilePermission "
${was.install.root}${/}lib${/}mail-impl.jar","read";
};
// As permissões a seguir aplicam-se a todos os arquivos .jar de utilitários (diferentes
// dos arquivos JAR de beans corporativos) no aplicativo.
grant codeBase "file:${jars}" {
permission java.net.SocketPermission "*", "connect";
permission java.util.PropertyPermission "*", "read";
};
// As seguintes permissões aplicam-se aos recursos do conector no aplicativo
grant codeBase "file:${connectorComponent}" {
permission java.net.SocketPermission "*", "connect";
permission java.util.PropertyPermission "*", "read";
};
// As permissões a seguir aplicam-se a todos os módulos da web (arquivos .war)
// dentro do aplicativo.
grant codeBase "file:${webComponent}" {
permission java.io.FilePermission "${was.module.path}${/}-", "read, write";
// em que "was.module.path" é o caminho em que o módulo da web está
// instalado. Consulte Conceitos do Política Dinâmica para obter outros símbolos.
permission java.lang.RuntimePermission "loadLibrary.*";
permission java.lang.RuntimePermission "queuePrintJob";
permission java.net.SocketPermission "*", "connect";
permission java.util.PropertyPermission "*", "read";
};
// As seguintes permissões aplicam-se a todos os módulos EJB no aplicativo.
grant codeBase "file:${ejbComponent}" {
permission java.lang.RuntimePermission "queuePrintJob";
permission java.net.SocketPermission "*", "connect";
permission java.util.PropertyPermission "*", "read";
};
Se permissões adicionais forem requeridas para um aplicativo ou para um ou mais módulos de um aplicativo, utilize o arquivo was.policy para o aplicativo. Por exemplo, utilize codeBase de ${application} e adicione as permissões requeridas para conceder permissões adicionais a todo o aplicativo. Da mesma forma, use codeBase do ${webComponent} e do ${ejbComponent} para conceder permissões adicionais para todos os módulo da Web e para todos os módulos do enterprise bean no aplicativo. Você pode atribuir permissões adicionais a cada módulo (arquivo .war ou arquivo .jar), conforme mostrado no exemplo a seguir.
Este exemplo ilustra a inclusão de permissões extra para um aplicativo no arquivo was.policy:
// grant additional permissions to a web module
grant codeBase " file:aWebModule.war" {
permission java.security.SecurityPermission "printIdentity";
};
// conceder permissão adicional a um módulo EJB
grant codeBase "file:aEJBModule.jar" {
permission java.io.FilePermission "
${user.install.root}${/}bin${/}DefaultDB${/}-", "read,write,delete";
// em que, ${user.install.root} é a propriedade do sistema cujo valor está
// localizado no diretório app_server_root.
};
Para utilizar um arquivo was.policy para seu aplicativo, execute as seguintes etapas:
Procedimento
Resultados
Exemplo
Essa etapa é necessária para que os aplicativos executem corretamente quando a segurança do Java 2 estiver ativada. Se o arquivo was.policy não for criado e não contiver as permissões requeridas, o aplicativo poderá não acessar os recursos do sistema.
O sintoma das permissões ausentes é a exceção java.security.AccessControlException. A permissão que está faltando é listada nos dados da exceção, por exemplo,
![[IBM i]](../images/iseries.gif)
![[z/OS]](../images/ngzos.gif)
java.security.AccessControlException: acesso negado (java.io.FilePermission
${was.install.root}/java/ext/mail.jar read)
![[IBM i]](../images/iseries.gif)
![[z/OS]](../images/ngzos.gif)
grant codeBase "file:user_client_installed_location" {
permission java.io.FilePermission
"${was.install.root}$(/)java$(/)jre$(/)lib$(/)ext$(/)mail.jar", "read";
};
As linhas de informações de permissão anteriores são divididas para a ilustração. Digite a permissão em uma linha.