Sugerencias para la resolución de problemas con los componentes de seguridad
Este documento explica los recursos básicos y los pasos para diagnosticar problemas relacionados con la seguridad en WebSphere® Application Server.
Qué archivos de registro buscar y qué buscar en ellos.
- Qué buscar y qué buscar utilizando SDSF.
- Enfoque general para la resolución de problemas relacionados con la seguridad para aislar y resolver problemas de seguridad.
- Cuándo y cómo rastrear la seguridad.
Visión general y tabla de CSIv2 Códigos menores CORBA.
- Errores y problemas de acceso después de habilitar la seguridad
Después de habilitar la seguridad, el rendimiento desciende. Consulte Habilitación de la seguridad global para obtener información sobre cómo utilizar los archivos de políticas sin restricciones.
- Errores después de habilitar SSL o mensajes de error relacionados con SSL
Errores al intentar configurar y habilitar la seguridad
Si ninguno de estos pasos resuelve el problema, compruebe si el problema se ha identificado y está documentado utilizando los enlaces del apartado Diagnóstico y solución de problemas: recursos de aprendizaje.
Si no ve un problema que se parezca al suyo, o si la información proporcionada no resuelve el problema, consulte la ayuda de resolución de problemas de IBM para obtener más ayuda.
Archivos de registro
SASRas A CWWSA0001I: Se ha inicializado la configuración de seguridad. SASRas A CWWSA0002I: Protocolo de autenticación: CSIV2/IBM SASRas A CWWSA0003I: Mecanismo de autenticación: SWAM SASRas A CWWSA0004I: Principal name: MYHOSTNAME/aServerID SASRas A CWWSA0005I: SecurityCurrent registrada. SASRas A CWWSA0006I: Se ha inicializado la conexión de seguridad. SASRas A CWWSA0007I: Se ha registrado el interceptor de solicitud de cliente. SASRas A CWWSA0008I: Se ha registrado el interceptor de solicitud de servidor. SASRas A CWWSA0009I: Se ha registrado el interceptor de IOR. NameServerImp I CWNMS0720I: Se efectúa el registro de la escucha de servicio de seguridad. SecurityCompo A CWSCJ0242A: Se está iniciando el servicio de seguridad. UserRegistryI A CWSCJ0136I: Custom Registry:com.ibm.ws.security.registry.nt. NTLocalDomainRegistryImpl se ha inicializado. SecurityCompo A CWSCJ0202A: La aplicación de administración se ha inicializado correctamente. SecurityCompo A CWSCJ0203A: La aplicación de denominación se ha inicializado satisfactoriamente. SecurityCompo A CWSCJ0204A: RolebasedAuthorizer se ha inicializado satisfactoriamente. SecurityCompo A CWSCJ0205A: Se ha registrado satisfactoriamente Security Admin mBean SecurityCompo A CWSCJ0243A: El servicio de seguridad se ha iniciado correctamente. SecurityCompo A CWSCJ0210A: Seguridad habilitada.
SASRas A CWWSA0001I: Se ha inicializado la configuración de seguridad. SASRas A CWWSA0002I: Protocolo de autenticación: CSIV2/IBM SASRas A CWWSA0003I: Mecanismo de autenticación: SWAM SASRas A CWWSA0004I: Principal name: MYHOSTNAME/aServerID SASRas A CWWSA0005I: SecurityCurrent registrada. SASRas A CWWSA0006I: Se ha inicializado la conexión de seguridad. SASRas A CWWSA0007I: Se ha registrado el interceptor de solicitud de cliente. SASRas A CWWSA0008I: Se ha registrado el interceptor de solicitud de servidor. SASRas A CWWSA0009I: Se ha registrado el interceptor de IOR. NameServerImp I CWNMS0720I: Se efectúa el registro de la escucha de servicio de seguridad. SecurityCompo A CWSCJ0242A: Se está iniciando el servicio de seguridad. UserRegistryI A CWSCJ0136I: Registro personalizado:com.ibm.ws.security. registry.nt.NTLocalDomainRegistryImpl se ha inicializado. Authenticatio E CWSCJ4001E: Ha fallado el inicio de sesión para badID/<null> javax.security.auth.login.LoginException: error de autenticación: usuario/contraseña erróneos
SASRas A CWWSA0001I: Se ha inicializado la configuración de seguridad. SASRas A CWWSA0002I: Protocolo de autenticación: CSIV2/IBM SASRas A CWWSA0003I: Mecanismo de autenticación: LTPA SASRas A CWWSA0004I: Nombre de principal: NOMBREMIHOST/unID SASRas A CWWSA0005I: SecurityCurrent registrada. SASRas A CWWSA0006I: Se ha inicializado la conexión de seguridad. SASRas A CWWSA0007I: Se ha registrado el interceptor de solicitud de cliente. SASRas A CWWSA0008I: Se ha registrado el interceptor de solicitud de servidor. SASRas A CWWSA0009I: Se ha registrado el interceptor de IOR. NameServerImp I CWNMS0720I: Se efectúa el registro de la escucha de servicio de seguridad. SecurityCompo A CWSCJ0242A: Se está iniciando el servicio de seguridad. UserRegistryI A CWSCJ0136I: Custom Registry:com.ibm.ws.security.registry.nt. NTLocalDomainRegistryImpl se ha inicializado. SecurityServe E CWSCJ0237E: Uno o más atributos de configuración de LTPAServerObject vitales son nulos o no están disponibles. Los atributos y los valores son la contraseña : la contraseña de LTPA existe, la hora de caducidad es 30, la clave privada<null>, la clave pública <null> y la clave compartida <null>.
SASRas A CWWSA0001I: Se ha inicializado la configuración de seguridad. SASRas A CWWSA0002I: Protocolo de autenticación: CSIV2/IBM SASRas A CWWSA0003I: Mecanismo de autenticación: SWAM SASRas A CWWSA0004I: Principal name: MYHOSTNAME/aServerId SASRas A CWWSA0005I: SecurityCurrent registrada. SASRas A CWWSA0006I: Se ha inicializado la conexión de seguridad. SASRas A CWWSA0007I: Se ha registrado el interceptor de solicitud de cliente. SASRas A CWWSA0008I: Se ha registrado el interceptor de solicitud de servidor. SASRas A CWWSA0009I: Se ha registrado el interceptor de IOR. SASRas E CWWSA0026E: [SecurityTaggedComponentAssistorImpl.register] Excepción al conectar el objeto con ORB. Compruebe la configuración de SSL para asegurarse de que las propiedades keyStore y trustStore se hayan establecido correctamente. Si el problema persiste, póngase en contacto con el servicio de soporte para obtener ayuda. org.omg.CORBA.OBJ_ADAPTER: ORB_CONNECT_ERROR (5) - no se ha podido obtener el subcontrato del servidor minor code: 4942FB8F completed: No
Utilización de SDSF
Durante la resolución de problemas del componente de seguridad, utilice SDSF (System Display and Search Facility) para examinar las anotaciones cronológicas del servidor que aloja el recurso al que está intentando acceder. El siguiente es un ejemplo de las ayudas de mensajes que puede ver desde un servidor en el que el servicio de seguridad se ha iniciado correctamente.
+BBOM0001I com_ibm_authMechanisms_type_OID: No existe ningún OID para este mecanismo. +BBOM0001I com_ibm_security_SAF_unauthenticated: WSGUEST. +BBOM0001I com_ibm_security_SAF_EJBROLE_Audit_Messages_Suppress: 0. +BBOM0001I com_ibm_ws_logging_zos_errorlog_format_cbe: NOT SET, 280 DEFAULT=0. +BBOM0001I com_ibm_CSI_performClientAuthenticationRequired: 0. +BBOM0001I com_ibm_CSI_performClientAuthenticationSupported: 1. +BBOM0001I com_ibm_CSI_performTransportAssocSSLTLSRequired: 0. +BBOM0001I com_ibm_CSI_performTransportAssocSSLTLSSupported: 1. +BBOM0001I com_ibm_CSI_rmiInboundPropagationEnabled: 1. +BBOM0001I com_ibm_CSI_rmiOutboundLoginEnabled: 0. +BBOM0001I com_ibm_CSI_rmiOutboundPropagationEnabled: 1. +BBOM0001I security_assertedID_IBM_accepted: 0. +BBOM0001I security_assertedID_IBM_sent: 0. +BBOM0001I security_disable_daemon_ssl: NOT SET, DEFAULT=0. +BBOM0001I security_sslClientCerts_allowed: 0. +BBOM0001I security_sslKeyring: NOT SET. +BBOM0001I security_zOS_domainName: NOT SET. +BBOM0001I security_zOS_domainType: 0. +BBOM0001I security_zSAS_ssl_repertoire: SY1/DefaultIIOPSSL. +BBOM0001I security_EnableRunAsIdentity: 0. +BBOM0001I security_EnableSyncToOSThread: 0. +BBOM0001I server_configured_system_name: SY1. +BBOM0001I server_generic_short_name: BBOC001. +BBOM0001I server_generic_uuid: 457 *** Los mensajes que empiezan por BBOO0222I se aplican a Java en la *** *** seguridad de WebSphere Application Server *** +BBOO0222I: SECJ6004I: El servicio Security Auditing está inhabilitado. +BBOO0222I: SECJ0215I: Se ha establecido satisfactoriamente la clase de configuración 631 del proveedor del inicio de sesión JAAS en com.ibm.ws.security.auth.login.Configuration. +BBOO0222I: SECJ0136I: Registro 632 personalizado:com.ibm.ws.security.registry.zOS.SAFRegistryImpl se ha inicializado +BBOO0222I: SECJ0157I: Se ha cargado la tabla de autorizaciones del proveedor: 633 com.ibm.ws.security.core.SAFAuthorizationTableImpl
BBOM0001I security_zOS_domainName: NOT SET.
BBOM0001I security_zOS_domainType: 0.
BBOM0001I security_SMF_record_first_auth_user: NOT SET, DEFAULT=1.
BBOJ0077I: java.security.policy = /WebSphere/V8R5/AppServer/profil
BBOJ0077I: es/default/properties/server.pol
BBOJ0077I: icy
BBOJ0077I: java.security.auth.login.config = /WebSphere/V8R5/AppServer
BBOJ0077I: /profiles/default/properties/wsj
BBOJ0077I: aas.conf
BBOO0222I: SECJ6004I: Se ha inhabilitado la auditoría de seguridad.
BBOO0222I: SECJ0215I: Se ha establecido satisfactoriamente la clase de
configuración
del proveedor del inicio de sesión JAAS en
com.ibm.ws.security.auth.login.Configuration.
BBOO0222I: JSAS0001I: Se ha inhabilitado la configuración de seguridad.
BBOO0222I JSAS0003I: Mecanismo de autenticación: LTPA
BBOO0222I JSAS0004I: Nombre de principal: DEFAULT/CBSYMSR1
BBOO0222I: JSAS0006I: Se ha inicializado el interceptor de conexiones de seguridad.
BBOO0222I: JSAS0009I: Interceptor de IOR registrado.
BBOO0222I: SECJ0136I: Personalizado
Registry:com.ibm.ws.security.registry.zOS.SAFRegistryImpl se ha
inicializado
BBOO0222I: SECJ6214I: Autorización SAF habilitada.
BBOO0222I: ACWA0002I: El servicio de área de trabajo no está habilitado en server1.
BBOO0222I: SECJ6216I: Delegación SAF habilitada.
BBOO0222I: SECJ6216I: Delegación SAF habilitada.
BBOO0222I: SECJ6216I: Delegación SAF habilitada.
BBOO0222I: SRVE0169I: Cargando módulo Web: WIM.
BBOO0222I: CHFW0019I: El servicio de canal de transporte ha iniciado la cadena
WCInboundAdmin.
BBOO0222I: CHFW0019I: El servicio de canal de transporte ha iniciado la cadena
WCInboundDefault.
BBOO0222I: CHFW0019I: El servicio de canal de transporte ha iniciado la cadena
WCInboundAdminSecure.
BBOO0222I: CHFW0019I: El servicio de canal de transporte ha iniciado la cadena
WCInboundDefaultSecure.
BBOO0222I: WSVR0001I: El servidor SERVANT PROCESS server1 está abierto para
e-business
BBOO0020I SE HA COMPLETADO LA INICIALIZACIÓN PARA WEBSPHERE PARA Z/OS EL PROCESO DEL SERVANT
BBOS001.
./bborjtr.cpp+953 ... BBOO0222I: SECJ0231I: El módulo de diagnóstico FFDC com.ibm.ws.security.core.Sec del componente de seguridad
se ha registrado
correctamente: true.
BossLog: { 0013} 2013/07/12 16:46:00.104 01 SYSTEM=SY1 SERVER=BBOS001 PID=0X02010022 TID=0X266AF610 00000000 c=UNK
./bborjtr.cpp+953 ... BBOO0222I: SECJ0309I: La Seguridad de Java 2 está inhabilitada.
BossLog: { 0014} 2013/07/12 16:46:00.143 01 SYSTEM=SY1 SERVER=BBOS001 PID=0X02010022 TID=0X266AF610 00000000 c=UNK
./bborjtr.cpp+953 ... BBOO0222I: SECJ0212I: Se ha pasado correctamente la información de configuración de WCCM JAAS a la clase de proveedor de inicio de sesión.
clase.
BossLog: { 0015} 2013/07/12 16:46:00.258 01 SYSTEM=SY1 SERVER=BBOS001 PID=0X02010022 TID=0X266AF610 00000000 c=UNK
./bborjtr.cpp+953 ... BBOO0222I: SECJ0240I: La inicialización del servicio de seguridad se ha completado satisfactoriamente
BossLog: { 0016} 2013/07/12 16:46:00.448 01 SYSTEM=SY1 SERVER=BBOS001 PID=0X02010022 TID=0X266AF610 00000000 c=UNK
./bborjtr.cpp+953 ... FFDC0009I: FFDC ha abierto el archivo de corriente de incidentes /WebSphere/V8R5/AppServer/profiles/default/logs/ffdc/S
Y1_SY1_server1_STC
00042_BBOS001S_06.07.12_16.46.00_0.txt
BossLog: { 0017} 2013/07/12 16:46:00.532 01 SYSTEM=SY1 SERVER=BBOS001 PID=0X02010022 TID=0X266AF610 00000000 c=UNK
./bborjtr.cpp+953 ... FFDC0010I: FFDC ha cerrado archivo continuo de incidencias /WebSphere/V8R5/AppServer/profiles/default/logs/ffdc/S
Y1_SY1_server1_STC
00042_BBOS001S_06.07.12_16.46.00_0.txt
./bborjtr.cpp+953 ... BBOO0222I: SECJ0243I: El servicio de seguridad se ha iniciado correctamente
BossLog: { 0035} 2013/07/12 16:46:24.670 01 SYSTEM=SY1 SERVER=BBOS001 PID=0X02010022 TID=0X266AF610 00000000 c=UNK
./bborjtr.cpp+953 ... BBOO0222I: SECJ0210I: Seguridad habilitada, true
BossLog: { 0036} 2013/07/12 16:46:24.795 01 SYSTEM=SY1 SERVER=BBOS001 PID=0X02010022 TID=0X266AF610 00000000 c=UNK
Método general para la resolución de problemas relacionados con la seguridad
- ¿Ocurre el problema cuando está habilitada la seguridad?
- Esta es una buena prueba para determinar si un problema está relacionado con la seguridad. No obstante, simplemente porque un problema se produzca solamente cuando está habilitada la seguridad no significa que siempre se trate de un problema de seguridad. Es necesario continuar con la resolución de problemas para estar seguro de que realmente el problema está relacionado con la seguridad.
- ¿Se ha inicializado correctamente la seguridad?
- Durante la inicialización se visita una gran parte del código de seguridad. Por lo tanto, puede ver los problemas en ese momento si el problema está relacionado con la configuración.
La siguiente secuencia de mensajes que se generan en SystemOut.log indican la inicialización de código normal de un servidor de aplicaciones. Esta secuencia puede variar dependiendo de la configuración pero los mensajes son similares:
SASRas A CWWSA0001I: Se ha inicializado la configuración de seguridad. SASRas A CWWSA0002I: Protocolo de autenticación: CSIV2/IBM SASRas A CWWSA0003I: Mecanismo de autenticación: SWAM SASRas A CWWSA0004I: Principal name: BIRKT20/pbirk SASRas A CWWSA0005I: SecurityCurrent registrada. SASRas A CWWSA0006I: Se ha inicializado la conexión de seguridad. SASRas A CWWSA0007I: Se ha registrado el interceptor de solicitud de cliente. SASRas A CWWSA0008I: Se ha registrado el interceptor de solicitud de servidor. SASRas A CWWSA0009I: Se ha registrado el interceptor de IOR. NameServerImp I CWNMS0720I: Se efectúa el registro de la escucha de servicio de seguridad. SecurityCompo A CWSCJ0242A: Se está iniciando el servicio de seguridad. UserRegistryI A CWSCJ0136I: Custom Registry:com.ibm.ws.security.registry.nt. NTLocalDomainRegistryImpl se ha inicializado. SecurityCompo A CWSCJ0202A: La aplicación de administración se ha inicializado correctamente. SecurityCompo A CWSCJ0203A: La aplicación de denominación se ha inicializado satisfactoriamente. SecurityCompo A CWSCJ0204A: RolebasedAuthorizer se ha inicializado satisfactoriamente. SecurityCompo A CWSCJ0205A: Se ha registrado satisfactoriamente Security Admin mBean SecurityCompo A CWSCJ0243A: El servicio de seguridad se ha iniciado correctamente. SecurityCompo A CWSCJ0210A: Seguridad habilitada.
La secuencia de mensajes siguientes que se genera en las anotaciones cronológicas activas de SDSF indican la inicialización del código normal de un servidor de aplicaciones. Los mensajes que no son de seguridad se han eliminado de la siguiente secuencia. Esta secuencia puede variar dependiendo de la configuración pero los mensajes son similares:Trace: 2013/05/06 17:27:31.539 01 t=8E96E0 c=UNK key=P8 (13007002) ThreadId: 0000000a FunctionName: printProperties SourceId: com.ibm.ws390.orb.CommonBridge Category: AUDIT ExtendedMessage: BBOJ0077I java.security.policy = /WebSphere/V8R5M0/AppServer/profiles/default/pr Trace: 2013/05/06 17:27:31.779 01 t=8E96E0 c=UNK key=P8 (13007002) ThreadId: 0000000a FunctionName: printProperties SourceId: com.ibm.ws390.orb.CommonBridge Category: AUDIT ExtendedMessage: BBOJ0077I java.security.auth.login.config = /WebSphere/V8R5M0/AppServer/profiles/default/pr Trace: 2013/05/06 17:27:40.892 01 t=8E96E0 c=UNK key=P8 (13007002) ThreadId: 0000000a FunctionName: com.ibm.ws.security.core.SecurityDM SourceId: com.ibm.ws.security.core.SecurityDM Category: INFO ExtendedMessage: BBOO0222I: SECJ0231I: The Security component's FFDC Diagnostic Module com.ibm.ws.security.core.Secur se ha registrado satisfactoriamente: true. Trace: 2013/05/06 17:27:40.892 01 t=8E96E0 c=UNK key=P8 (0000000A) Descripción: Log Boss/390 Error from filename: ./bborjtr.cpp at line: 932 error message: BBOO0222I: SECJ0231I: The Security component's FFDC Diagnostic Module com.ibm.ws.security.core.Securit se ha registrado satisfactoriamente: true. Trace: 2013/05/06 17:27:41.054 01 t=8E96E0 c=UNK key=P8 (13007002) ThreadId: 0000000a FunctionName: com.ibm.ws.security.audit.AuditServiceImpl SourceId: com.ibm.ws.security.audit.AuditServiceImpl Category: AUDIT ExtendedMessage: BBOO0222I: SECJ6004I: El servicio Security Auditing está inhabilitado. Trace: 2013/05/06 17:27:41.282 01 t=8E96E0 c=UNK key=P8 (13007002) ThreadId: 0000000a FunctionName: com.ibm.ws.security.core.distSecurityComponentImpl SourceId: com.ibm.ws.security.core.distSecurityComponentImpl Category: INFO ExtendedMessage: BBOO0222I: SECJ0309I: La Seguridad de Java 2 está inhabilitada. Trace: 2013/05/06 17:27:41.282 01 t=8E96E0 c=UNK key=P8 (0000000A) Descripción: Log Boss/390 Error from filename: ./bborjtr.cpp at line: 932 error message: BBOO0222I: SECJ0309I: La Seguridad de Java 2 está inhabilitada. Trace: 2013/05/06 17:27:42.239 01 t=8E96E0 c=UNK key=P8 (13007002) ThreadId: 0000000a FunctionName: com.ibm.ws.security.auth.login.Configuration SourceId: com.ibm.ws.security.auth.login.Configuration Category: AUDIT ExtendedMessage: BBOO0222I: SECJ0215I: Successfully set JAAS login provider configuration class to com.ibm.ws.securit Configuración. Trace: 2013/05/06 17:27:42.253 01 t=8E96E0 c=UNK key=P8 (13007002) ThreadId: 0000000a FunctionName: com.ibm.ws.security.core.distSecurityComponentImpl SourceId: com.ibm.ws.security.core.distSecurityComponentImpl Category: INFO ExtendedMessage: BBOO0222I: SECJ0212I: WCCM JAAS configuration information successfully pushed to login provider clas Trace: 2013/05/06 17:27:42.254 01 t=8E96E0 c=UNK key=P8 (0000000A) Descripción: Log Boss/390 Error from filename: ./bborjtr.cpp at line: 932 error message: BBOO0222I: SECJ0212I: WCCM JAAS configuration information successfully pushed to login provider class. Trace: 2013/05/06 17:27:42.306 01 t=8E96E0 c=UNK key=P8 (13007002) ThreadId: 0000000a FunctionName: com.ibm.ws.security.core.distSecurityComponentImpl SourceId: com.ibm.ws.security.core.distSecurityComponentImpl Category: INFO ExtendedMessage: BBOO0222I: SECJ0240I: Security service initialization completed successfully Trace: 2013/05/06 17:27:42.306 01 t=8E96E0 c=UNK key=P8 (0000000A) Descripción: Log Boss/390 Error from filename: ./bborjtr.cpp at line: 932 error message: BBOO0222I: SECJ0240I: Security service initialization completed successfully Trace: 2013/05/06 17:27:42.952 01 t=8E96E0 c=UNK key=P8 (13007002) ThreadId: 0000000a FunctionName: com.ibm.ws.objectpool.ObjectPoolService SourceId: com.ibm.ws.objectpool.ObjectPoolService Category: INFO ExtendedMessage: BBOO0222I: OBPL0007I: Object Pool Manager service is disabled. Trace: 2013/05/06 17:27:53.512 01 t=8E96E0 c=UNK key=P8 (13007002) ThreadId: 0000000a FunctionName: com.ibm.ws.security.registry.UserRegistryImpl SourceId: com.ibm.ws.security.registry.UserRegistryImpl Category: AUDIT ExtendedMessage: BBOO0222I: SECJ0136I: Custom Registry:com.ibm.ws.security.registry.zOS.SAFRegistryImpl has been init Trace: 2013/05/06 17:27:55.229 01 t=8E96E0 c=UNK key=P8 (13007002) ThreadId: 0000000a FunctionName: com.ibm.ws.security.role.PluggableAuthorizationTableProxy SourceId: com.ibm.ws.security.role.PluggableAuthorizationTableProxy Category: AUDIT ExtendedMessage: BBOO0222I: SECJ0157I: Loaded Vendor AuthorizationTable: com.ibm.ws.security.core.SAFAuthorizationTab Trace: 2013/05/06 17:27:56.481 01 t=8E96E0 c=UNK key=P8 (13007002) ThreadId: 0000000a FunctionName: com.ibm.ws.security.core.distSecurityComponentImpl SourceId: com.ibm.ws.security.core.distSecurityComponentImpl Category: INFO ExtendedMessage: BBOO0222I: SECJ0243I: El servicio de seguridad se ha iniciado correctamente Trace: 2013/05/06 17:27:56.481 01 t=8E96E0 c=UNK key=P8 (0000000A) Descripción: Log Boss/390 Error from filename: ./bborjtr.cpp at line: 932 error message: BBOO0222I: SECJ0243I: El servicio de seguridad se ha iniciado correctamente Trace: 2013/05/06 17:27:56.482 01 t=8E96E0 c=UNK key=P8 (13007002) ThreadId: 0000000a FunctionName: com.ibm.ws.security.core.distSecurityComponentImpl SourceId: com.ibm.ws.security.core.distSecurityComponentImpl Category: INFO ExtendedMessage: BBOO0222I: SECJ0210I: Seguridad habilitada Trace: 2013/05/06 17:27:56.483 01 t=8E96E0 c=UNK key=P8 (0000000A) Descripción: Log Boss/390 Error from filename: ./bborjtr.cpp at line: 932 error message: BBOO0222I: SECJ0210I: Seguridad habilitada - ¿Hay un rastreo de pila o una excepción impresa en el archivo de anotaciones del sistema?
- Un sola pila de rastreo proporciona mucha información acerca del problema. ¿Qué código ha iniciado el código que ha fallado? ¿Qué componente está fallando? ¿De qué clase de error procede el error? Algunas veces, el rastreo de pila es todo lo que se necesita para solucionar el problema y puede indicar la causa raíz. Otras veces, solamente puede proporcionarnos una sugerencia que podría, de hecho, confundirnos. Cuando el soporte analiza un rastreo de pila, es posible que solicite más rastreo si no queda claro cuál es el problema. Si aparentemente el problema está relacionado con la seguridad y no se puede determinar la solución a partir de la pila de rastreo o de la descripción del problema, se le solicitará que recopile la especificación de rastreo siguiente: SASRas=all=enabled:com.ibm.ws.security.*=all=enabled de todos los procesos implicados.
- ¿Es un problema de seguridad distribuido o un problema de seguridad local?
- Si el problema es local, es decir, si el código implicado no efectúa una llamada a método remota, entonces la resolución del problema quedará aislada a un solo proceso. Es importante saber cuándo un problema es local y no distribuido ya que el comportamiento del ORB (Object Request Broker), entre otros componentes, es diferente en cada caso. Cuando se invoca un método remoto, se especifica una vía de acceso de código de seguridad totalmente diferente.
- Cuando sabe que el problema implica dos o más servidores, las técnicas de resolución de problemas son diferentes. Necesitará rastrear todos los servidores implicados simultáneamente, de modo que el rastreo muestre los extremos de cliente y servidor del problema. Asegúrese de que las indicaciones de la hora de todas las máquinas coincidan tanto como sea posible para poder encontrar el par de solicitud y respuesta de dos procesos diferentes. Habilite SAS (Secure Authentication Services) y z/SAS y el rastreo de seguridad utilizando la
especificación de rastreo:
SASRas=all=enabled:com.ibm.ws.security.*=all=enabled.
Para obtener más información sobre cómo habilitar el rastreo, consulte Trabajar con rastreo.
- ¿Está relacionado el problema con la autenticación o con la autorización?
- La mayor parte de los problemas entran dentro de una de estas dos categoría. La autenticación es el proceso de determinar quién efectúa la llamada. La autorización es el proceso de validar que quien efectúa la llamada tiene la autorización correcta para invocar el método solicitado. Cuando se produce un error de autenticación, generalmente este error está relacionado con el protocolo de autenticación, el mecanismo de autenticación o el registro de usuarios. Cuando se produce un error de autorización, generalmente está relacionado con los enlaces de la aplicación desde su ensamblaje o despliegue y con la identidad del que efectúa la llamada quien está accediendo al método y a los roles que necesita el método.
- ¿Se trata de una solicitud web o EJB?
Las solicitudes web tienen una vía de acceso de código completamente diferente a las solicitudes EJB (Enterprise JavaBeans ). Las características de seguridad para las solicitudes web son diferentes de las de las solicitudes EJB y para su solución se requieren conocimientos diferentes. Por ejemplo, cuando se utiliza el mecanismo de autenticación LTPA (Lightweight Third-Party Authentication), la característica de inicio de sesión único (SSO) está disponible para las solicitudes web pero no para las solicitudes EJB. Las solicitudes Web requieren información de cabecera HTTP que las solicitudes EJB no requieren debido a las diferencias de protocolo. Asimismo, el contenedor web o motor de servlets está implicado en todo el proceso. Cualquiera de estos componentes puede estar involucrado en el problema y todos deben tenerse en cuenta durante la resolución de problemas, según el tipo de solicitud y el lugar donde se produce el error.
Las solicitudes EJB seguras implican en gran medida los componentes ORB y Naming, ya que fluyen a través del protocolo RMI/IIOP. Además, cuando está habilitada la gestión de flujo de trabajo (WLM), se pueden observar otros cambios de comportamiento en el código. Todos estos componentes participan conjunta y activamente para que la seguridad funcione correctamente en este entorno. Hay veces que puede ser necesario realizar un rastreo en cualquiera o en todos estos componentes para la resolución de problemas de este tipo.
La especificación de rastreo con la que empezar es SASRas=all=enabled:com.ibm.ws.security.*=all=enabled. El rastreo ORB también resulta muy beneficioso cuando el rastreo de SAS/Seguridad no indica cuál es el problema.
- ¿Parece estar relacionado el problema con la capa de sockets seguros (SSL)?
SSL es una capa de seguridad totalmente diferente e independiente. La resolución de problemas de SSL generalmente es diferente de la resolución de problemas de autenticación y autorización y tiene muchos cuestiones que considerar. Generalmente, los problemas de SSL son problemas de la configuración inicial ya que el proceso de configuración puede resultar difícil. Cada cliente debe contener el certificado de firmante del servidor. Durante la autenticación real, cada servidor debe contener el certificado del firmante del cliente. Asimismo, puede haber diferencias de protocolo, por ejemplo, entre SSLv3 o TLS (Transport Layer Security) y problemas en el puerto de escucha relacionados con IOR (Interoperable Object Reference) caducadas, esto es, con IOR procedentes de un servidor que refleja el número de puerto anterior al reinicio del servidor.
Para los problemas de SSL, a menudo se recibe una solicitud de rastreo de SSL para determinar lo que ocurre en el protocolo de enlace SSL. El protocolo de enlace SSL es el proceso que se lleva a cabo cuando un cliente abre un socket para un servidor. Si algo va mal durante el intercambio de claves, el intercambio de cifrado, etc., el protocolo de enlace no se ejecutará correctamente y, el socket no será válido. El rastreo de JSSE (la implementación SSL que se utiliza en WebSphere Application Server) implica los pasos siguientes:- Establezca la propiedad del sistema siguiente en los procesos cliente y servidor: -Djavax.net.debug=true. Para el servidor, añada la propiedad del sistema a la propiedad Argumentos genéricos de JVM de la página de valores de la máquina virtual Java.
Active también el rastreo de ORB.
- Vuelva a crear el problema.
El SystemOut.log de ambos procesos contiene el rastreo de JSSE. Encontrará un rastreo similar al siguiente ejemplo:
SSLConnection: install <com.ibm.sslite.e@3ae78375> >> handleHandshakeV2 <com.ibm.sslite.e@3ae78375> >> handshakeV2 type = 1 >> clientHello: SSLv2. SSL client version: 3.0 ... ... ... JSSEContext: handleSession[Socket[addr=null,port=0,localport=0]] << sendServerHello. SSL version: 3.0 SSL_RSA_WITH_RC4_128_MD5 HelloRandom ... ... ... << sendCertificate. << sendServerHelloDone. >> handleData <com.ibm.sslite.e@3ae78375> >> handleHandshake <com.ibm.sslite.e@3ae78375> >> handshakeV3 type = 16 >> clientKeyExchange. >> handleData <com.ibm.sslite.e@3ae78375> >> handleChangeCipherSpec <com.ibm.sslite.e@3ae78375> >> handleData <com.ibm.sslite.e@3ae78375> >> handleHandshake <com.ibm.sslite.e@3ae78375> >> handshakeV3 type = 20 >> finished. << sendChangeCipherSpec. << sendFinished.
Seguridad de rastreo
- com.ibm.ws.security.*
- com.ibm.websphere.security.*
- com.ibm.WebSphereSecurityImpl.*
- SASRas de
- com.ibm.ws.wim.* para el rastreo con un repositorio VMM (Virtual Member Manager)
- com.ibm.ws.security.*=all=enabled:com.ibm.WebSphereSecurityImpl.*= all=enabled:com.ibm.websphere.security.*=all=enabled. Esta sentencia de rastreo recopila el rastreo para el tiempo de ejecución de seguridad.
- com.ibm.ws.console.security.*=all=enabled. Esta sentencia de rastreo recopila el rastreo para la consola administrativa del centro de seguridad.
- SASRas=all=enabled. Esta sentencia de rastreo recopila el rastreo para SAS (lógica de autenticación de bajo nivel).
- com.ibm.ws.wim.*=all=enabled:com.ibm.websphere.wim.*=all=enabled. Esta sentencia de rastreo recopila el rastreo para VMM.
Ajuste de los rastreos de SAS:
Si es necesario rastrear un subconjunto de clases para el componente SAS/CSIv2 , se puede especificar una propiedad del sistema con los nombres de clase separados por comas: com.ibm.CORBA.securityTraceFilter=SecurityConnectionInterceptorImpl, VaultImpl, ...
- Ajuste de los rastreos de seguridad:
- Si se ha de rastrear un subconjunto de paquetes, especifique una especificación de rastreo más detallada que com.ibm.ws.security.*=all=enabled. Por ejemplo, para rastrear simplemente el código de política dinámico, puede especificar com.ibm.ws.security.policy.*=all=enabled. Para inhabilitar el rastreo de políticas dinámico, puede especificar com.ibm.ws.security.policy.*=all=disabled.
Configuración de CSIv2, o valores de rastreo SAS
Se producen situaciones en las que la revisión del rastreo para los protocolos de autenticación CSIv2 o SAS puede ayudar en la resolución de problemas difíciles. En esta sección se describe cómo habilitar el rastreo de CSIv2 y SAS.
Habilitación del rastreo de CSIv2 y SAS en el cliente
Para habilitar el rastreo de CSIv2 y SAS en un cliente puro, es necesario llevar a cabo los pasos siguientes:
- Edite el archivo TraceSettings.properties en el directorio /WebSphere/AppServer/properties.
- En este archivo, cambie traceFileName= para que señale a la vía de acceso donde desea incluir el archivo de salida. Asegúrese de indicar una doble barra inclinada invertida (\\) entre cada subdirectorio. Por ejemplo, traceFileName=c:\\WebSphere\\AppServer\\logs\\sas_client.log
- En este archivo, añada la serie de especificación de rastreo: SASRas=all=enabled. Se pueden añadir series adicionales de rastreo en otras líneas.
- Señale a este archivo desde dentro de la aplicación cliente. En la línea de mandatos Java donde inicia el cliente, añada la siguiente propiedad del sistema: -DtraceSettingsFile=TraceSettings.properties.Nota: No proporcione la vía de acceso completa al archivo TraceSettings.properties . Asegúrese de que el archivo TraceSettings.properties se encuentra en la classpath.
Habilitación del rastreo de CSIv2 y SAS en el cliente
Para habilitar el rastreo de CSIv2 y SAS en un cliente puro, es necesario llevar a cabo los pasos siguientes:
- Edite el archivo TraceSettings.properties en el directorio /WebSphere/AppServer/properties. Por ejemplo, edite raíz_perfil/properties/TraceSettings.properties.
- En este archivo, cambie traceFileName= para que señale a la vía de acceso donde desea crear el archivo de salida. Por ejemplo, traceFileName=raíz_perfil/logs/sas_client.
- En este archivo, añada la serie de especificación de rastreo: SASRas=all=enabled. Se pueden añadir series adicionales de rastreo en otras líneas.
- Señale a este archivo desde dentro de la aplicación cliente. En la línea de mandatos Java donde inicia el cliente, añada la siguiente propiedad del sistema: -DtraceSettingsFile=TraceSettings.properties.Nota: No proporcione la vía de acceso completa al archivo TraceSettings.properties . Asegúrese de que el archivo TraceSettings.properties se encuentra en la classpath.
- Habilitación del rastreo de CSIv2 y SAS en el servidor
- Para habilitar el rastreo de SAS en un servidor de aplicaciones, siga
las instrucciones que se indican a continuación:
- Añada la especificación de rastreo, SASRas=all=enabled, al archivo server.xml o añádalo a los valores de rastreo dentro de la GUI de la consola Web.
- Suele ser mejor rastrear también el tiempo de ejecución de la seguridad de autorización además del tiempo de ejecución del protocolo de autenticación. Para hacerlo, utilice las dos especificaciones de rastreo siguientes combinadas: SASRas=all=enabled:com.ibm.ws.security.*=all=enabled.
- Al realizar la resolución de un problema de tipo de conexión, es útil rastrear tanto CSIv2 y SAS o CSIv2 y z/SAS como el ORB. Para hacerlo, utilice las tres especificaciones de rastreo siguientes: SASRas=all=enabled:com.ibm.ws.security.*=all=enabled:ORBRas=all=enabled.
- Además de añadir estas especificaciones de rastreo, también es necesario establecer un par de propiedades del sistema para el rastreo de ORB. Vaya a los valores de ORB en la GUI y añada las dos propiedades siguientes: com.ibm.CORBA.Debug=true y com.ibm.CORBA.CommTrace=true.
Códigos menores CORBA de CSIv2
Cuando se producen excepciones en el código de seguridad del cliente o del servidor, la excepción final se convierte en una excepción CORBA (Common Object Request Broker Architecture). Cualquier excepción que se genere quedará "envuelta" por una excepción CORBA ya que la arquitectura CORBA la utiliza el servicio de seguridad para sus propias comunicaciones entre procesos. Las excepciones CORBA son genéricas e indican la existencia de un problema en la comunicación entre dos componentes. Los códigos menores CORBA son más específicos e indican la razón subyacente por la que un componente no puede completar una solicitud.
A continuación, se muestran los códigos menores CORBA que puede recibir un cliente después de ejecutar una solicitud relacionada con la seguridad como, por ejemplo, la autenticación. También se incluye el tipo de excepción CORBA en el que aparece el código menor.
La siguiente excepción muestra un ejemplo de una excepción CORBA en
la que el código menor es 49424300 e indica un error de autenticación. Generalmente, en la excepción también se incluye un mensaje descriptivo para ayudarle a solucionar el problema. En este caso, el mensaje detallado es: Exception caught invoking
authenticateBasicAuthData from SecurityServer for user jdoe. Reason: com.ibm.WebSphereSecurity.AuthenticationFailedException
lo que indica que la autenticación ha fallado para el usuario jdoe.
El campo completado de la excepción indica si se ha completado o no el método. En el caso de NO_PERMISSION, no invoque nunca el mensaje, por lo tanto, siempre será completed:No. Otras excepciones que se captan en el extremo del servidor pueden tener un estado de completado de Maybe
o Yes
.
org.omg.CORBA.NO_PERMISSION: Caught WSSecurityContextException in
WSSecurityContext.acceptSecContext(),
reason: Major Code[0] Minor Code[0] Message[Exception caught invoking
authenticateBasicAuthData from SecurityServer for user jdoe. Reason:
com.ibm.WebSphereSecurity.AuthenticationFailedException] minor code: 49424300
completed: No
at com.ibm.ISecurityLocalObjectBaseL13Impl.PrincipalAuthFailReason.
map_auth_fail_to_minor_code(PrincipalAuthFailReason.java:83)
at com.ibm.ISecurityLocalObjectBaseL13Impl.CSIServerRI.receive_request
(CSIServerRI.java:1569)
at com.ibm.rmi.pi.InterceptorManager.iterateReceiveRequest
(InterceptorManager.java:739)
at com.ibm.CORBA.iiop.ServerDelegate.dispatch(ServerDelegate.java:398)
at com.ibm.rmi.iiop.ORB.process(ORB.java:313)
at com.ibm.CORBA.iiop.ORB.process(ORB.java:1581)
at com.ibm.rmi.iiop.GIOPConnection.doWork(GIOPConnection.java:1827)
at com.ibm.rmi.iiop.WorkUnitImpl.doWork(WorkUnitImpl.java:81)
at com.ibm.ejs.oa.pool.PooledThread.run(ThreadPool.java:91)
at com.ibm.ws.util.CachedThread.run(ThreadPool.java:149)
| Nombre de código menor | Valor de código menor (en hexadecimales) | Tipo de excepción (todo en el paquete de org.omg.CORBA .*) | Descripción del código menor | Reintento realizado por el cliente autónomo (cuando authenticationRetryEnabled = true) | Reintento realizado por el servidor que actúa como cliente (cuando authenticationRetryEnabled = true) |
|---|---|---|---|---|---|
| AuthenticationFailed | 49424300 | NO_PERMISSION | Este código es un error genérico que indica que la autenticación ha fallado. No proporciona ningún detalle en cuanto si el ID de usuario o la contraseña son válidos. Algunos registros de usuario pueden optar por utilizar este tipo de código de error, otros pueden optar por utilizar los tres tipos siguientes que son más específicos. | Sí | Sí |
| InterceptLocateException | 494210B8 | INTERNAL | Indica un problema al procesar una solicitud de localización de entrada. | Nee | Nee |
| InvalidUserid | 49424301 | NO_PERMISSION | Este código se produce cuando el registro devuelve una contraseña errónea. | Sí | Nee |
| InvalidPassword | 49424302 | NO_PERMISSION | Este código se produce cuando el registro devuelve una contraseña errónea. | Sí | Nee |
| InvalidSecurityCredentials | 49424303 | NO_PERMISSION | Se trata de un error genérico que indica que las credenciales son erróneas por algún motivo. Es posible que no se hayan establecido los atributos correctos. | Sí, si el cliente tiene la credencial BasicAuth (en primer lugar se ha rechazado la credencial basada en símbolos). | Sí |
| InvalidRealm | 49424304 | NO_PERMISSION | Este código se produce cuando REALM en el símbolo recibido desde el cliente no coincide con el valor de REALM actual del servidor. | Nee | Nee |
| ValidationFailed | 49424305 | NO_PERMISSION | Se produce un error de validación cuando se envía un símbolo desde el cliente o servidor a un servidor de destino pero el formato del símbolo o la caducidad no son válidos. | Sí, si el cliente tiene la credencial BasicAuth (en primer lugar se ha rechazado la credencial basada en símbolos). | Sí |
| CredentialTokenExpired | 49424306 | NO_PERMISSION | Este código es más específico en cuanto al motivo por el que ha fallado la validación. En este caso, el símbolo tiene una duración absoluta y esta duración ha caducado. Por lo tanto, ya no es un símbolo válido y no se puede utilizar. | Sí, si el cliente tiene la credencial BasicAuth (en primer lugar se ha rechazado la credencial basada en símbolos). | Sí |
| InvalidCredentialToken | 49424307 | NO_PERMISSION | Es más específico en cuanto al motivo por el que ha fallado la validación. En este caso, el símbolo no se puede descifrar o los datos que incluye el símbolo no se pueden leer. | Sí, si el cliente tiene la credencial BasicAuth (en primer lugar se ha rechazado la credencial basada en símbolos). | Nee |
| SessionDoesNotExist | 49424308 | NO_PERMISSION | Indica que la sesión CSIv2 no existe en el servidor. Generalmente, se produce un reintento automáticamente que creará correctamente una sesión nueva. | Sí | Sí |
| SessionConflictingEvidence | 49424309 | NO_PERMISSION | Indica que ya existe una sesión en el servidor que coincide con el context_id enviado a través del cliente. Sin embargo, la información proporcionada por el cliente para este mensaje EstablishContext es diferente de la información que se ha proporcionado originalmente para establecer la sesión. | Sí | Sí |
| SessionRejected | 4942430A | NO_PERMISSION | Indica que el servidor ha rechazado previamente la sesión a la que hace referencia el cliente. | Sí | Sí |
| SecurityServerNotAvailable | 4942430B | NO_PERMISSION | Este error se produce cuando el servidor no puede contactar con el servidor de seguridad local o remoto para poder autenticar o validar. | Nee | Nee |
| InvalidIdentityToken | 4942430C | NO_PERMISSION | Este error indica que no se puede obtener la identidad a partir del símbolo de identidad cuando está habilitada la confirmación de identidad. | Nee | Nee |
| IdentityServerNotTrusted | 4942430D | NO_PERMISSION | Esto indica que el ID del servidor emisor no está en la lista de principales de confianza del servidor de destino. | Nee | Nee |
| InvalidMessage | 4942430E | NO_PERMISSION | Indica que el formato del mensaje CSIv2 no es válido para el servidor receptor. | Nee | Nee |
| MappingFailed | 4942430F | NO_PERMISSION | Indica que se ha producido un error de correlación de un asunto de entrada con la configuración de inicio de sesión del sistema RMI de entrada. | Nee | Nee |
| RevokedSecurityName | 49424310 | NO_PERMISSION | Indica que se ha revocado el ID de usuario. | Sí | Nee |
| ExpiredPassword | 49424311 | NO_PERMISSION | Indica que la contraseña ha caducado. | Sí | Nee |
| AuthenticationNotSupported | 49421090 | NO_PERMISSION | Este error se produce cuando un mecanismo no soporta la autenticación (lo cual es muy raro). | Nee | Nee |
| InvalidSecurityMechanism | 49421091 | NO_PERMISSION | Se utiliza para indicar que se desconoce el mecanismo de seguridad especificado. | Nee | Nee |
| CredentialNotAvailable | 49421092 | NO_PERMISSION | Indica que no hay una credencial disponible cuando se necesita. | Nee | Nee |
| SecurityMechanismNotSupported | 49421093 | NO_PERMISSION | Este error se produce cuando no se implementa en el servidor un mecanismo de seguridad especificado en el símbolo CSIv2. | Nee | Nee |
| ValidationNotSupported | 49421094 | NO_PERMISSION | Este error se produce cuando un mecanismo no soporta la validación ,por ejemplo, LocalOS. Este error no debe producirse ya que la credencial LocalOS no es una credencial reenviable, por lo tanto, nunca debe invocarse la validación en esta credencial. | Nee | Nee |
| CredentialTokenNotSet | 49421095 | NO_PERMISSION | Se utiliza para indicar que la señal incluida en la credencial es nula. | Nee | Nee |
| InvalidEvidence | 49421096 | NO_PERMISSION | Este error indica que se necesita la autenticación de cliente en el servidor. Sin embargo, la información de autenticación no está presente en la solicitud de método del cliente. | Nee | Nee |
| UserRegistryMethod_Protected | 49421098 | NO_PERMISSION | Este error indica que se ha intentado acceder de forma remota a un método UserRegistry protegido. | Nee | Nee |
| ServerConnectionFailed | 494210A0 | COMM_FAILURE | Este error se utiliza cuando un intento de conexión no se ejecuta correctamente. | Sí (mediante el registro ORB) | Sí (mediante el registro ORB) |
| CorbaSystemException | 494210B0 | INTERNAL | Este código es una excepción genérica específica de CORBA en el código del sistema. | Nee | Nee |
| JavaException | 494210B1 | INTERNAL | Se trata de un error genérico que indica que se ha producido una excepción de Java inesperada. | Nee | Nee |
| ValueIsNull | 494210B2 | INTERNAL | Este código se utiliza para indicar que un valor o parámetro que se ha pasado es nulo. | Nee | Nee |
| EffectivePolicyNotPresent | 494210B3 | INTERNAL | Indica que un objeto de política en vigor para CSIv2 no está presente. Este objeto se utiliza para determinar las características de configuración de seguridad que se han configurado. | Nee | Nee |
| NullPointerException | 494210B4 | INTERNAL | Este código se utiliza para indicar que se ha captado una NullPointerException durante la ejecución. | Nee | Nee |
| ErrorGettingClassInstance | 494210B5 | INTERNAL | Indica un problema durante la carga dinámica de una clase. | Nee | Nee |
| MalFormedParameters | 494210B6 | INTERNAL | Esto indica que los parámetros no son válidos. | Nee | Nee |
| DuplicateSecurityAttributeType | 494210B7 | INTERNAL | Indica que se ha especificado un atributo de credencial duplicado durante la operación de set_attributes. | Nee | Nee |
| MethodNotImplemented | 494210C0 | NO_IMPLEMENT | Indica que no se ha implementado un método invocado. | Nee | Nee |
| GSSFormatError | 494210C5 | BAD_PARAM | Este código indica que la rutina de codificación o decodificación de GSS (Generic Security Services) ha creado una excepción. | Nee | Nee |
| TagComponentFormatError | 494210C6 | BAD_PARAM | Esto indica que no puede leerse correctamente un componente de código. | Nee | Nee |
| InvalidSecurityAttributeType | 494210C7 | BAD_PARAM | Este código indica que un tipo de atributo especificado durante la operación set_attributes es de un tipo no válido. | Nee | Nee |
| SecurityConfigError | 494210CA | INITIALIZE | Este código indica que existe un problema entre la configuración del cliente y la del servidor. | Nee | Nee |
Para obtener la información actual disponible en el soporte de IBM sobre problemas conocidos y su resolución, consulte la página IBM Support .
El servicio de soporte de IBM tiene documentos que pueden ahorrarle tiempo a la hora de reunir la información necesaria para solucionar este problema. Antes de abrir un PMR, consulte la página IBM Support .