Title: RE: API Retrieve User Information (QSYRUSRI) y autorizaciones

> -----Mensaje original-----
> De:   [EMAIL PROTECTED] [SMTP:[EMAIL PROTECTED] En nombre de Javier Mora
> Enviado el:   miércoles, 13 de septiembre de 2006 15:18
> Para: [email protected]
> Asunto:       RE: API Retrieve User Information (QSYRUSRI) y autorizaciones

> > He modificado el fuente para monitorizar los mensajes de error al llamar a la API (rc=-1 y devuelve el CPF de error). y ahora informa  correctamente del Msgid CPF9802 sino está autorizado al objeto (en este caso el perfil de usuario).
> >
> > He subido el ejemplo aqui
> > <<http://www.ajut400.com/descargas/QSYRUSRI.rpgle>>
> >
> > Pruébalo y dime el resultado......
> >

>
> El resultado es.... ;-)
>
> QUE SI ESTÁ VALIDANDO LAS AUTORIZACIONES Y, EFECTIVAMENTE, APARECE EL ERROR CPF0801.
>
> Ahora si que estoy jodido, porque me toca averiguar que narices pasa con mi programa. Voy a intentarlo. Ya contaré algo.

>

ATENCIÓN A LOS DESPREVENIDOS: LA SIGUIENTE EXPLICACIÓN ES DENSA, DOLOROSA Y, A LO MEJOR, NO ESTÁ MUY CLARA. ABSTENERSE AQUELLOS QUE NO ESTÉIS INTERESADOS.

Bueno, ya he descubierto que es lo que ocurre. No se si seré capaz de explicarme :-)

* ¿Qué es lo que quiero hacer?

Estoy trabajando sobre un programa de manejo de interrupción sobre una cola de mensajes. Este programa accede a la información del perfil de usuario del remitente del mensaje para mostrar en pantalla el texto descriptivo.

Este programa está hecho en ILE RPG y se activa en el grupo de activación QILE. No se, de momento, si esta circunstancia también afecta al comportamiento anómalo que he detectado.

* Operativa de las pruebas

Por cuestiones de auditorías externas de seguridad, etc, etc... Tenemos un perfil de usuario con el nivel más bajo de autorizaciones para realizar las pruebas de los programas. Es decir, es un usuario como otro cualquiera, menos el grupo de usuarios de informática. Este usuario no tiene contraseña, es decir, nadie puede iniciar una sesión con él.

Los desarrolladores conocemos la existencia de este usuario. ¿Cómo lo utilizamos para las pruebas? Tenemos un pequeño programita que nos permite sustituir al usuario actual del trabajo (el que inició la sesión) por este otro usuario de pruebas. El cambio se hace sin problemas.

Una vez que estamos en este entorno de pruebas, se procede a comprobar los programas.

* Lo que ocurre

1. Se inicia la conexión con mi usuario habitual.
2. Se cambia el usuario actual por el de pruebas.
3. Se comprueba el cambio con DSPJOB opción 1.
4. Se activa el programa manejador de interrupción con CHGMSGQ xxxx DLVRY(*BREAK) PGM(MIPGM)
5. Desde otra sesión se envía el mensaje a la cola "xxxx".
6. En la sesión inicial se observa una ventana con el mensaje enviado y el texto del perfil de usuario remitente.

Mi extrañeza surge porque no falla el programa.

* Lo observado en las pruebas

1. Antes de inicar el envío del mensaje compruebo que el usuario actual del trabajo es el de pruebas (DSPJOB/Opc 1).

2. Cuando se activa el programa manejador por el mensaje enviado, lo interrumpo ante de usar la API y compruebo el usuario actual (DSPJOB/Opc 1). ¡Sorpresa! El usuario actual del trabajo es el que inició la sesión, que si tiene autorización sobre el usuario remitente. Por esto no falla el progama.

3. Si inicio una sesión con el usuario de pruebas (lo pongo contraseña), si que aparece el error por no tener autorizaciones.

* CONCLUSIÓN

1. El programa de intercambio del usuario actual del trabajo puede que no funcione bien.

2. Parece que hay un cambio en las propiedades del trabajo cuando se activa el programa manejador. Por lo menos, cuando este se interrupe el usuario actual del trabajo no es el mismo que cuando termina.

3. El sistema está comprobando correctamente las autorizaciones. En este caso, el usuario que ejecuta el programa manejador es el mismo que inició el trabajo, no el de pruebas.

4. A veces, no siempre contamos bajo que "entorno" se está ejecutando los programas, por desconocimiento o por pensar que no afectan a lo que hacemos.

5. He descubierto que el AS/400, iSeries, System i, o como se llame sigue siendo un misterio para mi, aun teniendo 15 años de experiencia.


* LOS PROGRAMAS

Si alguno de vosotros estáis inteterasados en los fuentes de estos programas, decírmelo. No son prototipos pero todavía les queda probarlos mucho.

Un saludo a todos y disculpad por este rollo.

Javier Mora

Responder a