Il se peut que certains de vos codes d'application Java génèrent des erreurs AccessControlException
dans le nouvel environnement. Vous pouvez diagnostiquer et résoudre ces problèmes d'autorisation en vérifiant les journaux pour plus de détails, puis en configurant les autorisations à l'aide d'Oracle Enterprise Manager Fusion Middleware Control.
Lorsque vous définissez codeBase pour accorder des droits d'accès (à l'étape 2 de la procédure suivante), les variables d'environnement suivantes peuvent être utiles :
oracle.deployed.app.dir=/u01/data/domains/wls_domain/server/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
Pour diagnostiquer et résoudre des problèmes d'autorisations, procédez comme suit :
- Activer la journalisation JPS. Le niveau de journalisation par défaut n'est généralement pas suffisant pour repérer la source des erreurs
AccessControlException
. L'utilisation d'un détail plus précis sur les journaux vous permet de voir la base de code exacte qui exécute l'opération non autorisée.
- Ouvrez la console d'administration Oracle WebLogic Server et, dans l'arborescence Structure de domaine, développez Environnement. Sélectionnez Serveurs, puis cliquez sur le nom du serveur géré.
- Sélectionnez l'onglet Démarrage du serveur, cliquez sur Verrouiller et modifier, puis ajoutez les arguments suivants à la fin de la liste d'arguments :
-Djps.auth.debug=true
Djps.auth.debug.verbose=true
- Cliquez sur Enregistrer, puis sur Activer les modifications. Redémarrez ensuite le serveur géré.
- Répétez le cas d'utilisation qui cause AccessControlException, puis recherchez les entrées journalisées dans le fichier journal .out du serveur géré. Recherchez la chaîne
FAILED
. Par exemple :
[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...
Assurez-vous que le contexte de stratégie
, la ressource/cible
, l'action
et la classe d'autorisations
correspondent à ceux affichés par l'exception.
- Vérifiez le bloc
CodeSource
affiché immédiatement sous le fragment de journal de l'étape précédente. Le fichier répertorié est le fichier JAR exécutant le code avec l'autorisation manquante. Par exemple :
CodeSource-file:/u01/data/domains/wls_domain/servers/wls_server_1/tmp/_WL_user/oauth-client/kk4bjg/lib/PublicReportServiceWSClient-1.0.11.jar
- Accordez une autorisation pour cette base de code. Vous pouvez le faire à l'aide de l'outil de ligne de commande WLST ou à l'aide d'Oracle Enterprise Manager Fusion Middleware Control. Les étapes suivantes montrent comment octroyer des droits d'accès à l'aide d'Oracle Enterprise Manager.
Pour plus de détails sur l'utilisation de WLST, connectez-vous à My Oracle Support et recherchez l'article Doc ID 1327577.1
.
- Connectez-vous à Oracle Enterprise Manager Fusion Middleware Control et dans le menu déroulant Domaine WebLogic, sélectionnez Sécurité, puis Stratégies système. Cliquez sur Créer une autorisation de sécurité.
- Dans la page Créer une autorisation système, sous CodeBase, ajoutez le fichier codeSource trouvé dans le fichier journal.
Remplacez les variables d'environnement pour éviter d'utiliser le chemin réel du fichier. Par exemple, la variable oracle.deployed.app.dir
pointe vers le dossier _WL_user
dans l'exemple de chemin de fichier indiqué dans l'exemple de fichier JAR d'erreur de journal de l'étape précédente. Vous pouvez également utiliser la variable d'environnement oracle.deployed.app.ext
pour appliquer l'autorisation à tout ce qui se trouve sous le chemin en cours.
Par exemple :
file:${oracle.deployed.app.dir}/MassItem28B${oracle.deployed.app.ext}
- Cliquez sur Ajouter. Cochez la case Sélectionner ici pour saisir les détails d'une nouvelle option d'autorisation et remplissez les détails :
- Classe d'autorisation : oracle.security.jps.service.credstore.CredentialAccessPermission
- Nom de ressource : context=SYSTEM,mapName=user.public.map,keyName=SaaSSystemAccount
- Actions d'autorisation : lire
- Cliquez sur OK. Vérifiez les informations et cliquez sur OK pour enregistrer les modifications.
Après l'octroi de l'autorisation, généralement aucun redémarrage n'est nécessaire, mais si le problème se produit encore, redémarrer le serveur peut le résoudre. Après avoir résolu une erreur d'accès refusé, vous pouvez maintenant voir une nouvelle erreur sur un autre codeSource, car plus de votre code Java est en mesure d'exécuter. Par conséquent, vous devrez peut-être répéter ce processus de révision du journal, accorder une nouvelle autorisation à un autre fichier JAR, puis réessayer plusieurs fois jusqu'à ce que vous ayez résolu tous les problèmes d'autorisations.