È possibile che alcuni dei codici dell'applicazione Java generino errori AccessControlException
nel nuovo ambiente. È possibile diagnosticare e risolvere questi problemi di autorizzazione controllando i log per i dettagli, quindi configurando le autorizzazioni mediante Oracle Enterprise Manager Fusion Middleware Control.
Quando si definisce codeBase per concedere le autorizzazioni (nel passo 2 della procedura seguente), le variabili di ambiente riportate di seguito potrebbero essere utili.
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
Per diagnosticare e risolvere i problemi relativi alle autorizzazioni, procedere come segue.
- Abilita log JPS. Il livello di log predefinito di solito non è sufficiente per trovare l'origine degli errori
AccessControlException
. L'utilizzo di un dettaglio più fine sui log consente di visualizzare l'esatta base del codice in esecuzione dell'operazione non autorizzata.
- Aprire la console di amministrazione di Oracle WebLogic Server e, nell'albero Struttura dominio, espandere Ambiente. Selezionare Server, quindi fare clic sul nome del server gestito.
- Selezionare la scheda Avvio server, fare clic su Blocca e modifica, quindi aggiungere gli argomenti riportati di seguito alla fine della lista di argomenti.
-Djps.auth.debug=true
Djps.auth.debug.verbose=true
- Fare clic su Salva, quindi su Attiva modifiche. Quindi, riavviare il server gestito.
- Replicare il caso d'uso che causa AccessControlException, quindi cercare le voci registrate nel file di log .out del server gestito. Cercare la stringa
FAILED
. ad esempio:
[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...
Assicurarsi che PolicyContext
, Resource/Target
, Action
e Permission Class
corrispondano a quelli mostrati dall'eccezione.
- Controllare il blocco
CodeSource
visualizzato immediatamente sotto lo snippet di log nel passo precedente. Il file elencato è il file JAR che esegue il codice con l'autorizzazione mancante. ad esempio:
CodeSource-file:/u01/data/domains/wls_domain/servers/wls_server_1/tmp/_WL_user/oauth-client/kk4bjg/lib/PublicReportServiceWSClient-1.0.11.jar
- Concedere un'autorizzazione per questa base codice. A tale scopo è possibile utilizzare lo strumento della riga di comando WLST oppure Oracle Enterprise Manager Fusion Middleware Control. I passi riportati di seguito mostrano come concedere l'autorizzazione mediante Oracle Enterprise Manager.
Per informazioni dettagliate sull'utilizzo di WLST, collegarsi a My Oracle Support e cercare l'articolo Doc ID 1327577.1
.
- Accedere a Oracle Enterprise Manager Fusion Middleware Control e dal menu a discesa Dominio WebLogic selezionare Sicurezza, quindi Criteri di sistema. Fare clic su Crea nuova autorizzazione di sicurezza.
- Nella pagina Crea autorizzazione di sistema, in CodeBase, aggiungere il file codeSource trovato nel file di log.
Sostituire le variabili di ambiente per evitare di utilizzare il percorso effettivo del file. Ad esempio, la variabile oracle.deployed.app.dir
punta alla cartella _WL_user
nel percorso del file di esempio specificato nel file jar degli errori di log di esempio del passo precedente. È inoltre possibile utilizzare la variabile di ambiente oracle.deployed.app.ext
per applicare l'autorizzazione a tutto ciò che si trova nel percorso corrente.
Ad esempio:
file:${oracle.deployed.app.dir}/MassItem28B${oracle.deployed.app.ext}
- Fare clic su Aggiungi. Selezionare Seleziona qui per immettere i dettagli per una nuova opzione di autorizzazione e compilare i dettagli:
- Classe autorizzazione: oracle.security.jps.service.credstore.CredentialAccessPermission
- Nome risorsa: context=SYSTEM,mapName=user.public.map,keyName=SaaSSystemAccount
- Azioni autorizzazione: lettura
- Fare clic su OK. Rivedere le informazioni e fare clic su OK per salvare le modifiche.
Dopo aver concesso l'autorizzazione, di solito non è necessario riavviare, ma se il problema persiste, riavviare il server potrebbe risolverlo. Dopo aver risolto un errore di accesso negato, è ora possibile visualizzare un nuovo errore in un altro codeSource, poiché più codice Java è in grado di eseguire. Di conseguenza, potrebbe essere necessario ripetere questo processo di revisione del log, concedere una nuova autorizzazione a un altro file jar, quindi rieseguire il test più volte fino a quando non sono stati risolti tutti i problemi relativi alle autorizzazioni.