SIU-Diaguita/version3.4.0/guia rapida diaguita eei

De SIU
Revisión del 16:25 3 may 2023 de Pboyko (discusión | contribuciones)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Guía Rápida SIU-Diaguita Integración EEI

Siu-diaguita.png



Se requiere tener funcionando Arai-Usuarios, Arai-Documentos, Huarpe y Sudocu.

Recuerde que el dominio uunn.local debe ser reemplazado por el que corresponde.
La URL https://universidad.edu.ar/diaguita usada como ejemplo es la url de acceso a la instalación existente de SIU-Diaguita.

En https://expedientes.siu.edu.ar/ se encuentra toda la documentación relacionada al despliegue del Expediente Electronico Integrado, incluida la integración de SIU-Diaguita y los otros módulos SIU.

Registrar SIU-Diaguita como Service Provider en Araí Usuarios

2.1 Ingrese a Araí-Usuarios

2.2 Dirigirse a Aplicaciones

2.3 Presionar el botón Agregar +

2.4 Completar de la siguiente manera el tab Datos Generales

2.5 Completar de la siguiente manera el tab SAML

2.6 Presionar el botón Guardar

Configurar parámetros SAML en SIU-Diaguita

3.1 Editar en el archivo instalador.env las siguientes líneas:

###### CONFIG SP ONE LOGIN ######

SSO_SP_IDP_METADATA_URL=https://uunn.local/idp/saml2/idp/metadata.php

SSO_SP_IDP_URL_SERVICE=https://uunn.local/idp/saml2/idp/SSOService.php

SSO_SP_IDP_SINGLE_LOGOUT_URL_SERVICE=https://uunn.local/idp/saml2/idp/SingleLogoutService.php

SSO_SP_IDP_PUBLIC_KEY_FILE=/usr/local/siu/diaguita/temp/certificado_idp.crt

SSO_SP_ATRIBUTO_USUARIO=defaultUserAccount

SSO_SP_PERMITE_LOGIN_TOBA=0

SSO_SP_AUTH_SOURCE=default-sp

SSO_SP_COOKIE_NAME=TOBA_SESSID

SSO_SP_IDP_NAME=https://uunn.local


SSO_SP_IDP_METADATA_URL: URL del IDP donde estén accesibles los metadatos. Por ej: https://service.example.com/idp.metadata
SSO_SP_IDP_URL_SERVICE: URL del IDP donde esté accesible el servicio. Por ej: http://service.example.com/simplesaml/saml2/idp/SSOService.php
SSO_SP_IDP_SINGLE_LOGOUT_URL_SERVICE: URL para cerrar sesión en el IDP. Por ej: http://service.example.com/simplesaml/saml2/idp/SingleLogoutService.php
SSO_SP_IDP_PUBLIC_KEY_FILE: Ruta al archivo del certificado público usado para firmar los tokens SAML en el IDP
SSO_SP_ATRIBUTO_USUARIO: El atributo del IDP que contiene el identificador de usuario: En este caso se debe usar defaultUserAccount
SSO_SP_PERMITE_LOGIN_TOBA: Si se activa el login interno del proyecto vía Toba. Posibles valores 0 y 1
SSO_SP_AUTH_SOURCE: El auth source del SP, por defecto es default-sp
SSO_SP_COOKIE_NAME: Nombre de la cookie manejada por OneLogin. Por ej: TOBA_SESSID
SSO_SP_IDP_NAME: Nombre del IDP. Por ej: service.example.com


3.2 Ejecutar el comando de reconfiguración del instalador:

./bin/instalador proyecto:reconfigurar sso

3.3 Editar en el archivo instalacion/instalacion.ini donde se incorporan las sgtes líneas:

autenticacion = "saml_onelogin"

vincula_arai_usuarios = "1"


Se debe agregar el parámetro vincula_arai_usuarios = "1" ya que este no se genera automáticamente.


3.4 Verificar en el archivo instalacion/saml_onelogin.ini que exista la entrada:

proyecto_login = "diaguita"


En versiones de SIU-Diaguita 3.0.1 o anterior no se genera automáticamente el valor del parámetro proyecto_login y por lo tanto se debe configurar manualmente. En posteriores versiones se incluirá la automatización del mismo.

Forzar uso de HTTPS en SIU-Diaguita

4.1 Verificar el archivo instalacion/web_server.ini que esté configurado HTTPS

4.1.1 De lo contrario puede editar el archivo instalador.env

TOBA_FORZAR_HTTPS=on

4.1.2 Ejecutar el comando de reconfiguración de TOBA:

./bin/instalador proyecto:reconfigurar toba

Configurar el cliente de usuarios en SIU-Diaguita

5.1 Editar el archivo instalacion/i__produccion/p__toba_usuarios/rest/rest_arai_usuarios/cliente.ini

[conexion]

to = "https://uunn.local/api-usuarios/v1/"

auth_tipo = "basic"

auth_usuario = "USR_API_USUARIOS"

auth_password = "PASS_API_USUARIOS"


El usuario y la contraseña del API de Arai-Usuarios configurados en este paso, se almacenan en un secret, para los cual editamos el archivo secrets.sh y modificamos la linea 13 donde crea el secret usuarios_api_users
Agregamos ["diaguita","diaguita123"] en este caso "diaguita" sería el usuario y "diaguita 123" la contraseña.

printf '[["diaguita","diaguita123"],["documentos","documentos123"],["huarpe","huarpe123"],["proveedores","proveedores123"]]' | docker secret create usuarios_api_users -

Para posteriormente ejecutar los comandos:

docker secret rm usuarios_api_users

./secrets.sh


5.2 Editar el archivo instalacion/instalacion.ini y agregar el appUniqueId

vincula_arai_appID = 'APP_UNIQUE_ID_DIAGUITA'


APP_UNIQUE_ID_DIAGUITA: Es el identificador de aplicación de SIU-Diaguita en Araí-Usuarios. Este valor se puede obtener desde el listado de Aplicaciones en Araí-Usuarios en la columna appUniqueId.

Habilitar el REST de notificaciones

6.1 Editar el archivo instalacion/i__produccion/p__diaguita/rest/servidor.ini

autenticacion = "basic"

[settings]

formato_respuesta = "json"

url_protegida = "/(?=^((?!convocatorias-publicas|notificaciones).)+$)/xs"

encoding = "utf-8"

[v1]

path_api = "/usr/local/siu/diaguita/php/rest/v1"

path_api_pers = "/usr/local/siu/diaguita/personalizacion/php/rest/v1"

Configurar los parámetros para Araí-Documentos en SIU-Diaguita

7.1 Se debe crear el archivo instalacion/arai_documentos.ini con los siguientes valores:

host_arai = "https://uunn.local/docs"

usr_arai = "USR_API_DOCUMENTOS"

pass_arai = "PASS_API_DOCUMENTOS"

queue_path = "/usr/local/siu/diaguita/temp"

queue_temp_dir = "/usr/local/siu/diaguita/temp"

db_queue = "DB_DIAGUITA"

dbq_host = "HOST_POSTGRES"

dbq_port = "PUERTO_POSTGRES"

dbq_user = "USER_POSTGRES"

dbq_password = "PASSWORD_POSTGRES"

dbq_table_name = "queue.queue"

polling_interval = "1000"

rest_diaguita = "https://universidad.edu.ar/diaguita/rest/v1/notificaciones/documento"


host_arai: Es la ruta a la API de Araí-Documentos
usr_arai: Usuario de acceso a la API de Araí-Documentos
pass_arai: Contraseña de acceso a la API de Araí-Documentos
queue_path: Directorio usado por la librería queue para escribir archivos internos
queue_temp_dir: Directorio usado por la librería queue para escribir archivos temporales
db_queue: Nombre de la base de datos donde se encuentra el schema queue. Corresponde a la base de negocio de SIU-Diaguita
dbq_host: Ruta al host donde se encuentra la base db_queue
dbq_port: Puerto de PostgreSQL donde se encuentra la base db_queue
dbq_user: Usuario de PostgreSQL donde se encuentra la base db_queue
dbq_password: Contraseña de PostgreSQL donde se encuentra la base db_queue
dbq_table_name: Tabla usada por la librería queue. Se debe mantener el valor queue.queue
polling_interval: No se debe modificar
rest_diaguita: URL de acceso al REST de notificaciones de Diaguita. Se debe reemplazar por la URL de la instalación existente, manteniendo /rest/v1/notificaciones/documento

Habilitar acceso externo de API Backend de documentos

8.1 Editar el archivo docs.yml

Agregar las líneas:

- "traefik.http.routers.docs-backend.rule=Host(`uunn.local`) && PathPrefix(`/docs/rest/backend`)"

- "traefik.http.routers.docs-backend.tls=true"

Adicionalmente, como este es un endpoint que no debería quedar publicado se tendrían que adicionar las siguientes líneas (con su correspondiente ajuste):

- "traefik.http.middlewares.docs-ipwhitelist.ipwhitelist.sourcerange=127.0.0.1/32,172.77.100.0/24"

- "traefik.http.routers.docs-backend.middlewares=security-headers@file,docs-ipwhitelist"

8.2 Luego se debe realizar el deploy de documentos para actualizar los servicios.

docker stack rm docs

docker stack deploy --with-registry-auth -c prod/arai/docs.yml docs

Worker de Documentos

9.1 Iniciar el worker de documentos es:

bin/toba proyecto iniciar_workers_arai_documentos -p diaguita

9.1.1 También puede configurar Supervisor para correr el worker de documentos.

[program:diaguita-worker-documentos]

command=/usr/local/siu/diaguita/bin/toba proyecto iniciar_workers_arai_documentos -p diaguita

autostart=true

autorestart=true

stderr_logfile=/var/log/diaguita-worker-documentos-err.log

stderr_logfile_maxbytes=2MB

stderr_logfile_backups=10

stderr_capture_maxbytes=1MB

stdout_logfile=/var/log/diaguita-worker-documentos-stdout.log

stdout_logfile_maxbytes=10MB

stdout_logfile_backups=10

stdout_capture_maxbytes=1MB

9.1.2 Ejecutar para iniciar Supervisor

systemctl start supervisor

9.1.3 Verificar la ejecución del worker

supervisorctl status diaguita-worker-documentos

Habilitar Bundles

10.1 Se recomienda generar un secret (seguro) para almacenar la contraseña de la API de SIU-Diaguita con el siguiente comando:

printf "diaguita123" | docker secret create diaguita_api_client_pass -

O podemos editar el archivo secrets.sh y agregar la línea:

printf "diaguita123" | docker secret create diaguita_api_client_pass -

10.2 En caso de haber editado el archivo secrets.sh ejecutar:

./secrets.sh

10.3 En el archivo prod/arai/huarpe.yml se deben descomentar (o agregar) los ítems en las secciones que se detallan a continuación.

# Agregar en la sección webapp:secrets

# Línea 37

webapp

  secrets:

    - diaguita_api_client_pass


# Agregar en la sección secrets

# Línea 94

secrets:

  diaguita_api_client_pass:

    external: true

10.4 En el archivo huarpe.env debemos definir valores para las restantes variables del entorno

API_DIAGUITA_USR=diaguita_api_client_user

API_DIAGUITA_URL=https://universidad.edu.ar/diaguita/rest/v1/

API_DIAGUITA_PASS_FILE=/run/secrets/diaguita_api_client_pass

BUNDLE_COMPRAS_ACTIVO=1

BUNDLE_PATRIMONIO_ACTIVO=1

DIAGUITA_URL_COMPRAS=https://compras.uunn.local/

DIAGUITA_APP_UNIQUE_ID=APP_UNIQUE_ID_DIAGUITA


BUNDLE_COMPRAS_ACTIVO: Indica que se deben activar los bundles de Compras de SIU-Diaguita
BUNDLE_PATRIMONIO_ACTIVO: Indica que se deben activar el bundle de Patrimonio de SIU-Diaguita
API_DIAGUITA_USR: Usuario para acceder a la API de SIU-Diaguita.
API_DIAGUITA_URL: URL de la API de SIU-Diaguita. Ej: https://universidad.edu.ar/diaguita/rest/vX/
DIAGUITA_URL_COMPRAS: URL de la operación en SIU-Diaguita. Ej: https://compras.universidad.edu.ar
DIAGUITA_APP_UNIQUE_ID: Es el identificador de aplicación de SIU-Diaguita en Araí-Usuarios. Este valor se puede obtener desde el listado de Aplicaciones en Araí-Usuarios en la columna appUniqueId

10.5 Ejecutar los comandos:

docker stack rm huarpe

docker stack rm usuarios

docker stack deploy --with-registry-auth -c prod/arai/usuarios.yml usuarios

docker stack deploy --with-registry-auth -c prod/arai/huarpe.yml huarpe

Usuarios y cuentas

En adelante, nos referiremos de la siguiente manera:

  • Llamaremos `usuario` a los usuarios de SIU-Araí: Usuarios
  • Llamaremos `cuenta` a la identificación/es que tenía un humano o sistema en la aplicación de origen

Para que un usuario tenga acceso a una cuenta de SIU-Diaguita necesita hacer el mapeo correspondiente en ARAI-Usuarios desde Usuarios -> (Filtramos el usuario deseado) -> Accedemos desde la lupa -> En la pestaña “Cuentas”

Seleccionamos la Aplicación: Diaguita (Es el nombre que se definió al momento de dar de alta la aplicación en ARAI-Usuarios)

Seleccionamos la Aplicación: <Escriba la cuenta deseado> (Recuerde que cuenta es el usuario que existe en la aplicación SIU-Diaguita)

Una representación esquemática sería:

persona

        |

usuario <──────> cuenta <──────> aplicacion

        |                                            |                                            |

svier <────────> sergio <──────> diaguita

        |                                            |                                            |

svier <────────> servier <──────> pilagá

Sincronizar cuentas de usuarios

Exportar cuentas de usuarios de Diaguita

Para exportar las cuentas de usuario de SIU-Diaguita que luego serán importadas en Araí-Usuarios se debe ejecutar el siguiente comando sobre la instalación de Diaguita:

toba proyecto exportar_usuarios_arai -p diaguita -f usuarios_diaguita

Este comando genera un archivo JSON con las cuentas de usuario de Diaguita. Si se verifica que este archivo contiene los datos del nombre y apellido de forma incorrecta se puede usar el parámetro --mascara para modificar el formato de los datos exportados.

Por ejemplo:

toba proyecto exportar_usuarios_arai --mascara '<apellido> <nombres>' -p diaguita -f usuarios_diaguita

Se debe verificar el JSON generado y tener en cuenta que en la sección accounts el valor del atributo appName debe coincidir con el nombre de la aplicación de SIU-Diaguita generado en Registrar SIU-Diaguita como Service Provider en Araí Usuarios. Si el valor no coincide, se recomienda modificar el nombre de la aplicación antes de realizar la importación, de lo contrario no se vincularán las cuentas correctamente.

Importar cuentas en Araí-Usuarios

En primer lugar es necesario correr el contenedor que permite realizar tareas administrativas sobre la instalación de Araí-Usuarios. Para esto se debe realizar el deploy de usuarios_cmd.yml de la sgte forma:

docker stack deploy --with-registry-auth -c prod/arai/util/usuarios_cmd.yml usr-cmd

Dicho servicio requiere que el nodo que ejecuta los comandos Docker y además tiene el contenido clonado del repositorio, agregarle el labels.cmd=usuarios para que el servicio usuarios_cmd se inicie y acceda al directorio files:

NODE_NAME=$(docker info --format 'Plantilla:.Name')

docker node update --label-add cmd=usuarios $NODE_NAME

Luego se debe copiar el JSON con las cuentas exportadas al directorio prod/arai/util/files ya que este directorio es accesible desde dentro del contenedor.

Una vez copiado el JSON es necesario conectarse al contenedor.

docker exec -it ID_CONTENEDOR_USR_CMD bash

Dentro del contenedor de deben ejecutar los siguientes comandos para setear las variables de entorno y finalmente importar las cuentas a Araí-Usuarios

source /entrypoint.sh --export-secrets && set +e

./idm/bin/toba proyecto importar_usuarios_arai -f files/usuarios_diaguita.json -m 2 -p arai_usuarios

Para conocer en detalle el funcionamiento de la importación de cuentas y sus parámetros puede visitar la documentación de Araí-Usuarios

Configuración de niveles de autorización de firma de documentos

12.1 Para configurar el nivel de firma de los documentos generados por Diaguita:

Ingresar al ítem de menú "Administración -> Parámetros" y establecer el parámetro FIRMA_DIGITAL_NIVEL_AUTORIZACION en el valor deseado (Autorización básica, Firma digital o Autorización mixta).

En el caso de elegir "Autorización mixta" se debe ingresar al menú "Administración -> Tablas maestras generales -> Configuración de firma por tipo de documento" para establecer en cada uno de los documentos generados por SIU-Diaguita cuál será el tipo de firma a utilizar (Autorización básica, Firma digital).

Errores más comunes

  • Tener mal las las rutas de Entity Id, Assertion Consumer Serv. y Single Logout Serv.
  • Una vez hechas todas las configuraciones usted puede verificarlas en la URLs en https://diaguita.local/diaguita/?metadata

  • No estar usando el certificado del idp correcto
  • Se configura en el archivo instalador.env, usted puede usar su propio certificado o usar el que se genera como indica la documentación https://expedientes.siu.edu.ar/docs/arai/#generar-certificados

  • Errores en o los certificados
  • Usted puede comprobar los certificados de los dominios donde esta corriendo el ecosistema o de la aplicación que está tratando de conectar al mismo, con los comandos:

    openssl s_client -connect uunn.local:443

    curl -I https://uunn.local

    openssl s_client -connect diaguita.local:443

    curl -I https://diaguita.local

  • Error en la url de las apis
  • Desde hace un tiempo todas las apis del SIU están versionadas, verifique que las URLs de las mismas tengan especificada la versión ejemplo /v1/ o /v2/ y que las urls de las mismas terminen con /

  • Error en el vincula_arai_appID
  • Debe controlar que en el archivo instalacion/instalacion.ini sea el mismo identificador de aplicación de SIU-Diaguita registrada en Araí-Usuarios.

  • Error en la url o en los datos de acceso de la api de documentos en el archivo instalacion/arai_documentos.ini
  • Error al enviar documentos a Arai-Documentos: Mensaje: docs-cli.INFO: Obteniendo stream almacenado en fs
  • Posibles soluciones:

    - Los parámetros queue_path y queue_temp_dir se usan para generar archivos temporales y requieren permisos de lectura y escritura. No es necesario definirlos explícitamente, ya que al no definirlos en el arai_documentos.ini se usa por defecto el directorio /temp del proyecto.

    - Problemas de escritura en /tmp debe configurar queue_temp_dir en el archivo instalacion/arai_documentos.ini

    - Verificar los permisos del directorio “exportaciones” dentro del proyecto, ya que en ese directorio se generan los pdf que luego son enviados.

    - Editar la configuración en el archivo php.ini (CLI) y reiniciar apache y el worker.

    allow_url_fopen = On

    En caso que los archivos logs, tengan salidas similares a:
    queue.log [DocumentosProcessor][Exception] No se pudo enviar el documento No se pudo obtener el stream del archivo a enviar params: array ( 'id' => *,) [] []
    docs-cli.log docs-cli.INFO: Obteniendo stream almacenado en fs [] []

    - Verificar que la base de datos de SIU-Diaguita definida en el archivo instalacion/bases.ini es la misma que se encuentra definida en instalacion/arai_documentos.ini en los parámetros db_queue, dbq_host, dbq_port.
    - Probar detener supervisor, enviar un documento a firmar (idealmente en una nueva SBS) y verificar que el documento quedó en el estado Pendiente de envío, correr el worker pero en lugar de levantar el servicio de supervisor, ejecutar el comando de toba dentro desde el directorio de SIU-Diaguita: ./bin/toba proyecto iniciar_workers_arai_documentos -p diaguita
    - Verificar el log del Arai-Documentos, para controlar si no existe un problema con la conexión de Arai-Documentos y Nuxeo.

  • No tener en la base de datos de Diaguita, el esquema y la tabla queue: Undefined table: 7 ERROR: relation "queue.queue" does not exist
  • SQL para aplicar en la base de datos de SIU-Diaguita:

    CREATE SCHEMA IF NOT EXISTS queue;
    
    CREATE TABLE IF NOT EXISTS queue.queue (
     id uuid NOT NULL,
     published_at bigint NOT NULL,
     body text,
     headers text,
     properties text,
     redelivered boolean,
     queue character varying(255) NOT NULL,
     priority smallint,
     delayed_until bigint,
     time_to_live bigint,
     delivery_id uuid,
     redeliver_after bigint
    );
    ALTER TABLE queue.queue OWNER TO postgres;
    
  • No tener corriendo Jasper, ejecutar diaguita_reportes.sh
  • Error en Postgres: “sintaxis de entrada no válida para tipo json”
  • Se puede obtener este error tanto en Diaguita como en Arai-Documentos.

    Normalmente ocurre por tener standard_conforming_strings = off.

    Se debe modificar ese valor ya que se requiere tener en Postgres el standard_conforming_strings = on

  • Los documentos quedan en el estado “Pendiente de envío”
  • El problema más común en este caso es que el worker no se encuentra corriendo. Verificar el estado y levantarlo en caso de que no este ejecutandose (Ver pto 9 de esta guia)

  • Documento en diaguita en estado Fallido
  • Verificar: docs-cli.log/queue.log y logs de arai-documentos

  • Luego de firmar el documento en huarpe, no cambia de estado en diaguita
  • Verificar docs-cli.log/queue.log y logs de arai-documentos

    Verificar si hay error en el log del worker de arai-documentos

    Posibles causas:

    - Certificado SSL no válido y la url del parámetro rest_diaguita en arai_documentos.ini está configurada con https y por lo tanto falla el POST desde arai-documentos a Diaguita.

    - No está público el rest de notificaciones. Verificar url_protegida en servidor.ini.

    - Verificar si es correcta la url del parámetro diaguita_rest en instalacion/arai_documentos.ini

    - Puede que hayan cambiado las credenciales/secrets, corregir con: service supervisor restart

  • Error al enviar documentos a Arai-Documentos: Mensaje: The transport fails to send the message due to some internal error.
  • Este error posiblemente ocurre porque algún parámetro de conexión a la base donde se encuentra la tabla "queue" es incorrecto.

    Se debería chequear el archivo instalacion/arai_documentos.ini para confirmar que los datos son correctos.Si se realiza la corrección de un parámetro y se está usando supervisor para correr el worker, se debe tener en cuenta que es necesario reiniciar el servicio de supervisor para que tome los cambios realizados.

Anexo: Actualización en modo Ecosistema

Actualmente al momento de actualizar SIU-Diaguita, el instalador no migra todas las configuraciones de la instalación anterior y existen archivos de configuración que es necesario revisar y terminar de configurar ya que no se configuran mediante el instalador.env.

Archivos que intervienen en el proceso:

instalacion/instalacion.ini

instalacion/arai_documentos.ini

instalacion/saml_onelogin.ini

instalacion/web_server.ini

instalacion/i__produccion/instancia.ini

instalacion/i__produccion/p__diaguita/rest/servidor.ini

instalacion/i__produccion/p__toba_usuarios/rest/rest_arai_usuarios/cliente.ini


Archivos de configuraciones no migradas:

En el archivo instalacion/instalacion.ini no se agrega los campos

vincula_arai_usuarios = "1"

vincula_arai_appID = "_15e386a849792db499366d86aa4accf0c7e234c7f8"


Se necesita agregar al archivo vincula_arai_usuarios = "1" y vincula_arai_appID el id del mismo se tiene que ver en Arai-Usuarios / Aplicaciones.


En el archivo instalacion/i__produccion/p__toba_usuarios/rest/rest_arai_usuarios/cliente.ini no se realiza la configuración automáticamente y es necesario ajustar los valores.

[conexion]

to = "https://uunn.local/api-usuarios/v1/"

auth_tipo = "basic"

auth_usuario = "diaguita"

auth_password = "diaguita123"

Los datos que van configurados en este punto dependen de la instalación, que esté actualizando.