Aquí hay un desglose de lo que eso significa y cómo solucionarlo:
Qué significa MQRC_NOT_Authorized (o código de razón 2035):
Este es el error de autorización más común en MQ. Indica que la ID de usuario (o el contexto del usuario en el que se está ejecutando la aplicación) tiene * no * los permisos necesarios para realizar la acción que está tratando de hacer en un recurso MQ específico. Piense en ello como intentar acceder a un archivo en su computadora sin los permisos de lectura/escritura requeridos.
Escenarios y causas comunes:
1. Contexto de identificación de usuario incorrecto:
* Ejecutando como un usuario diferente: La aplicación podría estar ejecutándose en una cuenta de usuario de Windows diferente a la que cree que es. Esto puede suceder si ha cambiado las cuentas de servicio, las tareas programadas o está ejecutando la aplicación desde un símbolo del sistema con privilegios elevados (por ejemplo, "Ejecutar como administrador").
* Usuario incorrecto para Com+ Aplicaciones: Si su aplicación está utilizando los servicios COM+, la identidad configurada para la aplicación COM+ es crucial. Asegúrese de que esté usando una cuenta que tenga permisos de MQ.
* Problemas de aplicaciones de WebSphere (era): Si su aplicación se implementa en WebSphere Application Server, asegúrese de que la ID de usuario esté configurada para la fuente de datos y las asignaciones de roles de seguridad de la aplicación estén autorizadas correctamente en MQ.
2. Permisos de objetos MQ faltantes o incorrectos:
* Acceso a la cola: El usuario no tiene `+get`,`+put`, `+browse` u otros permisos requeridos en la cola específica que la aplicación está intentando acceder. Los permisos `+Connect` y`+Invir` también se necesitan con frecuencia.
* Acceso al gerente de cola: El usuario no tiene autoridad `+Connect` al propio Administrador de colas. Este es un requisito fundamental.
* Acceso al canal: Si la aplicación se conecta de forma remota, el usuario no tiene autoridad `+Connect` al canal de conexión del servidor (SVRCONN). También puede necesitar permisos para usar el canal, como `+Altuser` o`+Setall` dependiendo de cómo se configuren los registros de autenticación del canal (Chlauth).
* Definición de proceso (proceso) Acceso: Si la aplicación está utilizando monitores de activación, el usuario necesita la autoridad `+Get` en la cola de iniciación y el acceso apropiado en la definición del proceso.
* Acceso al tema: Para publicar/suscribir aplicaciones, el usuario necesita la suscripción y los permisos de publicación apropiados sobre el tema o la cadena del tema.
3. registros de chlauth (registros de autenticación de canales):
* canales bloqueados: Los registros de Chlauth pueden bloquear explícitamente ciertos ID de usuario o direcciones IP para usar canales específicos. Si un registro de Chlauth evita que el usuario se conecte, el error se mostrará como `mqrc_not_authorized`.
* Atributo MCAUSER: El atributo `McAuser` en el canal de conexión del servidor (SVRCONN) especifica la ID de usuario que se utilizará cuando un cliente se conecta. Si `McAuser` está configurado incorrectamente o no configurado correctamente, puede conducir a problemas de autorización.
4. Problemas de configuración del administrador de la autoridad de objetos (OAM):
* Políticas incorrectas de OAM: El OAM es responsable de hacer cumplir las políticas de seguridad. Las políticas incorrectas pueden negar inadvertidamente el acceso a los recursos de MQ.
* Membresía del grupo: El usuario puede ser miembro de un grupo de Windows, pero al grupo no se les ha otorgado los permisos de MQ necesarios.
5. Prácticas de codificación incorrectas:
* no pasa credenciales correctamente: Si la aplicación está diseñada para pasar las credenciales del usuario a MQ para la autorización, asegúrese de que estas credenciales se pasen correctamente (por ejemplo, utilizando el campo 'UserId` en el MQMD o la estructura de' SecurityParameters 'al conectarse).
* Uso de un contexto de usuario predeterminado incorrectamente: Confiar en el contexto de usuario predeterminado puede ser problemático, especialmente en arquitecturas de niveles múltiples. Especificar explícitamente la ID de usuario a menudo es más confiable.
Pasos de solución de problemas:
1. Identificar la ID de usuario:
* Desde registros de aplicaciones: Verifique los registros de la aplicación para cualquier mensaje relacionado con la conexión MQ o la autorización. El mensaje de error puede contener la ID de usuario que se está utilizando.
* Desde registros de errores mq: Examine los registros de errores de MQ (AMQERR01.LOG) en el servidor de Manager de cola. Estos registros proporcionan información detallada sobre la falla de la autorización, incluida la ID de usuario, el objeto que se accede y los permisos que faltan.
* del código de aplicación: Depurar el código de aplicación para determinar cómo se determina y se pasa la identificación del usuario a MQ.
* Windows Process Explorer (Sysinternals): Use Process Explorer para identificar el contexto del usuario en el que se ejecuta la aplicación. Esto es particularmente útil para servicios o aplicaciones que se ejecutan bajo diferentes cuentas.
2. Verifique los permisos de objetos MQ:
* usando `dspmqaut` (mostrar autoridad mq): Este comando es su herramienta principal. Ejecutarlo para mostrar los permisos otorgados a un usuario o grupo específico en un objeto MQ específico (Manager de cola, cola, canal, etc.).
* Ejemplo:`dspmqaut -m qmgrname -t qmgr -p userId` (muestra permisos para` userId` en el Administrador de colas `Qmgrname`)
* Ejemplo:`dspmqaut -m qmgrname -t queue -n queueName -p userId` (muestra permisos para` userId` en la cola `queueName`)
* Ejemplo:`dspmqaut -m qmgrname -t canal -n canalName -p userId` (muestra permisos para` userId` en el canal `canalName`)
* MQ Explorer (GUI): También puede ver y modificar los permisos de objetos a través de la GUI de MQ Explorer (haga clic derecho en el objeto, seleccione "Propiedades", luego vaya a la pestaña "Registros de autoridad").
3. Examine los registros de Chlauth:
* Uso de `dspmqchauth` (registros de autenticación de canal de visualización):
* Ejemplo:`DSPMQCHAUTH -M QMGRNAME -T CHLAUTH -N ChannelName` (muestra todos los registros de Chlauth para Channel` ChannelName`)
* MQ Explorer: También puede ver y administrar registros de Chlauth en la GUI de MQ Explorer (haga clic derecho en el Administrador de colas, seleccione "Propiedades", luego vaya a la pestaña "Records de autenticación del canal").
* Verifique las reglas de bloqueo: Busque registros de Chlauth que puedan bloquear explícitamente la ID de usuario, la dirección IP o el nombre del cliente.
* Verificar el atributo `mcAuser`: Consulte el atributo `McAuser` en el canal SVRCONN. ¿Está configurado correctamente? Si está utilizando una ID de usuario genérica, asegúrese de que la ID de usuario tenga los permisos necesarios.
4. Permisos de subvención (usando `setmqaut`):
* Después de identificar los permisos faltantes, use el comando `setmqaut` para otorgarles.
* Ejemplo:`setmqaut -m qmgrname -t qmgr -n +conection -g" dominio \ groupname "` (otorga permiso de conexión al administrador de colas al grupo de dominio especificado)
* Ejemplo:`setmqaut -m qmgrname -t queue -n queueName -g" dominio \ groupname " +get +put +browse` (las subvenciones obtienen, pon y navegue el permiso para la cola al grupo de dominio especificado)
* Ejemplo:`setmqaut -m qmgrname -t canal -n canalName -p userId +Connect` (otorga el permiso de conexión al canal a un usuario específico)
5. Actualización de seguridad:
* Después de hacer cambios en los permisos de objetos o los registros de Chlauth, actualice la seguridad emitiendo el comando:`Actualizar el tipo de seguridad (Connauth)` Para los cambios en la autenticación de la conexión. Si esto no funciona, intente reiniciar el gerente de cola.
6. Simplifique y prueba:
* prueba con `amqsputc` y` amqsgetc`: Use los programas de muestra `AMQSPUTC` (para poner un mensaje) y` amqsgetc` (para obtener un mensaje) para verificar la conectividad y la autorización básicas. Estos son excelentes para aislar el problema. Ejecutarlos desde el mismo servidor que el servidor MQ inicialmente. Si eso funciona, ejecutarlos desde una máquina de cliente.
* Reduce la complejidad: Comience con la configuración más simple posible y agregue gradualmente la complejidad. Por ejemplo, inicialmente conectarse al Administrador de colas sin habilitado Chlauth, luego agregue y refine gradualmente las reglas de Chlauth.
7. Consulte la documentación y el soporte de IBM:
* IBM MQ Documentation: La documentación de IBM MQ es su mejor fuente para información detallada sobre autorización, chlauth y otras características de seguridad.
* Soporte de IBM: Si todavía está atrapado, considere abrir un caso de soporte con IBM. Tienen expertos que pueden ayudarlo a diagnosticar y resolver problemas de autorización complejos.
Consideraciones clave:
* grupos frente a usuarios individuales: En general, es la mejor práctica otorgar permisos a los grupos de Windows en lugar de usuarios individuales. Esto hace que la administración sea mucho más fácil, especialmente en entornos más grandes.
* menos privilegio: Otorgue solo los permisos mínimos necesarios a cada usuario o grupo.
* Auditoría: Habilite la auditoría de eventos relacionados con la seguridad para ayudarlo a rastrear fallas de autorización e identificar posibles problemas de seguridad.
Al seguir sistemáticamente estos pasos de solución de problemas y revisar cuidadosamente los registros de errores y la configuración de MQ, debe poder diagnosticar y resolver el error "no autorizado" en su entorno IBM MQ. Recuerde que la identificación precisa de la ID de usuario y una comprensión profunda de los conceptos de seguridad de MQ son cruciales para el éxito.