SIU-Diaguita/version3.4.0/guia rapida diaguita eei
Guía Rápida SIU-Diaguita Integración EEI
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.
Sumario
- 1 Guía Rápida SIU-Diaguita Integración EEI
- 2 Registrar SIU-Diaguita como Service Provider en Araí Usuarios
- 3 Configurar parámetros SAML en SIU-Diaguita
- 4 Forzar uso de HTTPS en SIU-Diaguita
- 5 Configurar el cliente de usuarios en SIU-Diaguita
- 6 Habilitar el REST de notificaciones
- 7 Configurar los parámetros para Araí-Documentos en SIU-Diaguita
- 8 Habilitar acceso externo de API Backend de documentos
- 9 Worker de Documentos
- 10 Habilitar Bundles
- 11 Usuarios y cuentas
- 12 Configuración de niveles de autorización de firma de documentos
- 13 Errores más comunes
- 14 Anexo: Actualización en modo Ecosistema
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
- Url: https://universidad.edu.ar/diaguita
- Nombre: diaguita
- Cómo ícono colocar esta imagen: https://hub.siu.edu.ar/siu/expedientes/-/blob/master/var/logos/diaguita.png
2.5 Completar de la siguiente manera el tab SAML
- Chequear la opción Activo
- Entity Id: https://universidad.edu.ar/diaguita/default-sp
- Assertion Consumer Serv.: https://universidad.edu.ar/diaguita/?acs
- Single Logout Serv.: https://universidad.edu.ar/diaguita/?sls
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.
- No estar usando el certificado del idp correcto
- Errores en o los certificados
- Error en la url de las apis
- Error en el vincula_arai_appID
- 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
- 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
Una vez hechas todas las configuraciones usted puede verificarlas en la URLs en https://diaguita.local/diaguita/?metadata
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
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
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 /
Debe controlar que en el archivo instalacion/instalacion.ini sea el mismo identificador de aplicación de SIU-Diaguita registrada en Araí-Usuarios.
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.
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;
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
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)
Verificar: docs-cli.log/queue.log y logs de arai-documentos
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
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.