Puede encontrar que parte del código de aplicación Java devuelve errores AccessControlException
en el nuevo entorno. Puede diagnosticar y resolver estos problemas de permisos comprobando los logs para obtener más información y, a continuación, configurando permisos mediante Oracle Enterprise Manager Fusion Middleware Control.
Al definir codeBase para otorgar permisos (en el paso 2 del siguiente procedimiento), las siguientes variables de entorno pueden ser útiles:
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 y resolver problemas de permisos:
- Active el registro JPS. Por lo general, el nivel de registro por defecto no es suficiente para detectar el origen de errores
AccessControlException
. El uso de un detalle más detallado en los logs permite ver la base de códigos exacta que está ejecutando la operación no autorizada.
- Abra la consola de administración de Oracle WebLogic Server y, en el árbol Estructura de Dominio, amplíe Entorno. Seleccione Servidores y, a continuación, haga clic en el nombre de servidor gestionado.
- Seleccione el separador Inicio del servidor, haga clic en Bloquear y editar y, a continuación, agregue los siguientes argumentos al final de la lista de argumentos:
-Djps.auth.debug=true
Djps.auth.debug.verbose=true
- Haga clic en Guardar y, a continuación, en Activar Cambios. A continuación, reinicie el servidor administrado.
- Replique el caso de uso que está causando AccessControlException y, a continuación, busque en el archivo log .out del servidor gestionado las entradas que se registran. Busque la cadena
FAILED
. Por ejemplo:
[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...
Asegúrese de que PolicyContext
, Resource/Target
, Action
y Permission Class
coinciden con los mostrados por la excepción.
- Compruebe el bloque
CodeSource
que se muestra inmediatamente debajo del fragmento de log en el paso anterior. El archivo que se muestra es el jar que ejecuta el código con el permiso que falta. Por ejemplo:
CodeSource-file:/u01/data/domains/wls_domain/servers/wls_server_1/tmp/_WL_user/oauth-client/kk4bjg/lib/PublicReportServiceWSClient-1.0.11.jar
- Otorgue un permiso para esta base de códigos. Puede hacerlo mediante la herramienta de línea de comandos WLST o mediante Oracle Enterprise Manager Fusion Middleware Control. Los siguientes pasos muestran cómo otorgar permiso mediante Oracle Enterprise Manager.
Para obtener más información sobre el uso de WLST, inicie sesión en My Oracle Support y busque el artículo Doc ID 1327577.1
.
- Conéctese a Oracle Enterprise Manager Fusion Middleware Control y, en el menú desplegable Dominio de WebLogic, seleccione Seguridad y, a continuación, Políticas del Sistema. Haga clic en Crear Nuevo Otorgamiento de Seguridad.
- En la página Crear Permiso del Sistema, en CodeBase, agregue el archivo codeSource encontrado en el archivo log.
Sustituir variables de entorno para evitar el uso de la ruta de acceso de archivo real. Por ejemplo, la variable oracle.deployed.app.dir
apunta a la carpeta _WL_user
en la ruta de acceso del archivo de ejemplo proporcionada en el archivo jar de errores de log del paso anterior. También puede utilizar la variable de entorno oracle.deployed.app.ext
para aplicar el permiso a todo en la ruta de acceso actual.
Por ejemplo:
file:${oracle.deployed.app.dir}/MassItem28B${oracle.deployed.app.ext}
- Haga clic en Agregar. Active esta opción para introducir detalles para obtener una nueva opción de permiso y rellene los detalles:
- Clase de Permiso: oracle.security.jps.service.credstore.CredentialAccessPermission
- Nombre de recurso: context=SYSTEM,mapName=user.public.map,keyName=SaaSSystemAccount
- Acciones de Permiso: lectura
- Haga clic en Aceptar. Revise la información y haga clic en Aceptar para guardar los cambios.
Después de otorgar permiso, normalmente no es necesario reiniciar, pero si el problema aún se produce, reiniciar el servidor puede resolverlo. Después de resolver un error denegado de acceso, ahora puede ver un nuevo error en otra codeSource, ya que más de su código Java puede ejecutarse. En consecuencia, puede que necesite repetir este proceso de revisión del log, concesión de un nuevo permiso a otro archivo jar y, a continuación, volver a probar varias veces hasta que haya resuelto todos los problemas de permisos.