Você pode descobrir que alguns de seus códigos de aplicativo Java geram erros AccessControlException
no novo ambiente. Você pode diagnosticar e resolver esses problemas de permissão verificando os logs para obter detalhes e, em seguida, configurando concessões de permissão usando o Oracle Enterprise Manager Fusion Middleware Control.
Ao definir o codeBase para conceder permissões (na etapa 2 do procedimento a seguir), as seguintes variáveis de ambiente podem ser úteis:
oracle.deployed.app.dir=/u01/data/domains/wls_domain/servers/wls_adminserver/tmp/_WL_user
oracle.deployed.app.ext=/-
common.components.home=/u01/app/oracle/middleware/oracle_common
domain.home=/u01/data/domains/wls_domain
Para diagnosticar e resolver problemas de permissões:
- Ativar log JPS. O nível de log padrão geralmente não é suficiente para descobrir a origem dos erros
AccessControlException
. O uso de um detalhe mais detalhado nos logs permite que você veja a base de código exata que está executando a operação não autorizada.
- Abra a Console de Administração do Oracle WebLogic Server e, na árvore Estrutura de Domínio, expanda Ambiente. Selecione Servidores e clique no nome do servidor gerenciado.
- Selecione a guia Iniciar Servidor, clique em Bloquear e Editar e adicione os seguintes Argumentos ao final da lista de argumentos:
-Djps.auth.debug=true
Djps.auth.debug.verbose=true
- Clique em Salvar e depois clique em Ativar Alterações. Em seguida, reinicialize o servidor gerenciado.
- Replicar o caso de uso que está causando o AccessControlException e, em seguida, procurar no arquivo de log .out do servidor gerenciado as entradas que estão sendo registradas. Procure a string
FAILED
. Por exemplo:
[OpsAuth] Check Permission
PolicyContext: [oauth-client]
Resource/Target: [context=SYSTEM,mapName=user.public.map,keyName=SaaSSystemAccount]
Action: [read]
Permission Class: [oracle.security.jps.service.credstore.CredentialAccessPermission]
Result: [FAILED]
Evaluater: [ACC]
Failed ProtectionDomain:ClassLoader-weblogic.utils.classloaders.GenericClassLoader@5Da796tt...
Certifique-se de que PolicyContext
, Resource/Target
, Action
e Permission Class
correspondem àqueles que estão sendo mostrados pela exceção.
- Verifique o bloco
CodeSource
mostrado imediatamente abaixo do snippet de log na etapa anterior. O arquivo listado é o jar que está executando o código com a permissão ausente. Por exemplo:
CodeSource-file:/u01/data/domains/wls_domain/servers/wls_server_1/tmp/_WL_user/oauth-client/kk4bjg/lib/PublicReportServiceWSClient-1.0.11.jar
- Conceda uma permissão para esta base de código. Você pode fazer isso usando a ferramenta de linha de comando WLST ou usando o Oracle Enterprise Manager Fusion Middleware Control. As etapas a seguir mostram como conceder permissão usando o Oracle Enterprise Manager.
Para obter detalhes sobre o uso do WLST, faça log-in no My Oracle Support e procure o artigo Doc ID 1327577.1
.
- Efetue log-in no Oracle Enterprise Manager Fusion Middleware Control e, no menu drop-down Domínio do WebLogic, selecione Segurança e, em seguida, Políticas do Sistema. Clique em Criar nova Concessão de Segurança.
- Na página Criar Concessão do Sistema, no CodeBase, adicione o arquivo codeSource encontrado no arquivo de log.
Substitua variáveis de ambiente para evitar o uso do caminho de arquivo real. Por exemplo, a variável oracle.deployed.app.dir
aponta para a pasta _WL_user
no caminho do arquivo de exemplo fornecido no arquivo jar de erro de log de exemplo da etapa anterior. Você também pode usar a variável de ambiente oracle.deployed.app.ext
para aplicar a permissão a tudo sob o caminho atual.
Por exemplo:
file:${oracle.deployed.app.dir}/MassItem28B${oracle.deployed.app.ext}
- Clique em Adicionar. Marque a opção Selecionar aqui para informar detalhes de uma nova permissão e preencha os detalhes:
- Classe de Permissão: oracle.security.jps.service.credstore.CredentialAccessPermission
- Nome do Recurso: context=SYSTEM,mapName=user.public.map,keyName=SaaSSystemAccount
- Ações de Permissão: leitura
- Clique em OK. Verifique as informações e clique em OK para salvar as alterações.
Após a concessão da permissão, geralmente não é necessário reiniciar, mas se o problema ainda ocorrer, a reinicialização do servidor poderá resolvê-lo. Depois de resolver um erro de acesso negado, agora você pode ver um novo erro em outro codeSource, pois mais do seu código Java pode ser executado. Consequentemente, talvez seja necessário repetir esse processo de revisão do log, concedendo uma nova permissão a outro arquivo jar e, em seguida, testando novamente várias vezes até que você tenha resolvido todos os problemas de permissões.