Saltar al contenido principal
Version: 1.0.5

SIU-Diaguita

Configurar SIU-Diaguita

En este apartado se presenta la documentación para preparar una instalación de SIU-Diaguita existente para que pueda interoperar con Araí y Sudocu.

Registrar SIU-Diaguita como Service Provider en Araí Usuarios

Para hacerlo debe acceder al manejador de usuarios y seguir estos pasos:

  1. Ingrese a Araí-Usuarios (user admin y password seteado anteriormente)
  2. Dirigirse al item Aplicaciones
  3. Presionar el botón Agregar +
  4. Completar de la siguiente manera el tab Datos Generales
  5. Completar de la siguiente manera el tab SAML
  6. Presionar el botón Guardar

La URL https://universidad.edu.ar/diaguita usada como ejemplo es la url de acceso a la instalación existente de SIU-Diaguita

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 apelllido 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 el paso anterior. 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

Se debe tener en cuenta que en clusters con más de un nodo es importante utilizar el constraint constraints: [ node.hostname == hostname-actual ] para lograr que el contenedor se ejecute en el mismo nodo que se ejecuta el stack deploy. Sin embargo en clusters con sólo un nodo esto no es necesario y puede ser eliminado del archivo usuarios_cmd.yml antes de realizar el deploy.

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

Configurar parámetros SAML en SIU-Diaguita

  • 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

A continuación se explica cada parámetro:

  • 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 donde está el certificado usado para contactar al 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

Luego de configurar las variables de entorno ejecutar el comando de reconfiguración del instalador:

./bin/instalador proyecto:reconfigurar sso

Al finalizar debemos verificar el archivo instalacion/instalacion.ini donde se incorporan las sgtes lineas:

 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.

También se genera el archivo instalacion/saml_onelogin.ini con la siguiente configuración:

[basicos]
permite_login_toba = "0"
atributo_usuario = "defaultUserAccount"


[sp]
auth_source = "default-sp"
session.phpsession.cookiename = "TOBA_SESSID"
idp = "https://uunn.local/idp/saml2/idp/metadata.php"

proyecto_login = "diaguita"

[idp:https://uunn.local/idp/saml2/idp/metadata.php]
name = "SIU-Diaguita"
SingleSignOnService = "https://uunn.local/idp/saml2/idp/SSOService.php"
SingleLogoutService = "https://uunn.local/idp/saml2/idp/SingleLogoutService.php"
certFile = "/usr/local/siu/diaguita/instalacion/idp.crt"

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

Se debe verificar que SIU-Diaguita este configurado para funcionar sobre HTTPS.

Para esto se deber verificar, y modificar de ser necesario, para que el parámetro TOBA_FORZAR_HTTPS se encuentre en el archivo instalador.env con el valor en on.

TOBA_FORZAR_HTTPS=on

Luego regenerar la configuración de TOBA con el comando:

./bin/instalador proyecto:reconfigurar toba

Se puede verificar que se ha configurado correctamente chequeando en el archivo instalacion/web_server.ini que el parámetro https se encuentre en on.

[server_config]
https = "on"

Habilitar API de usuarios

Para acceder a la API de usuarios desde fuera del cluster se debe descomentar las siguientes líneas en el archivo prod/arai/usuarios.yml.

Se debe agregar un nuevo usuario y contraseña para que SIU-Diaguita se autentifique contra la API de Araí-Usuarios. Para esto se debe modificar secrets.sh y agregar los datos de acceso en el secret usuarios_api_users como se indica a continuación.

Por ejemplo agregamos el usuario diaguita con contraseña diaguita123:

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

Luego se debe eliminar el servicio y el secret de usuarios_api de la siguiente forma:

docker service rm usuarios_api

docker secret rm usuarios_api_users

Luego se debe volver a crear el secret ejecutando ./secrets.sh y finalmente se debe realizar nuevamente el deploy de usuarios como se indica aquí.

Configurar el cliente de usuarios en SIU-Diaguita

En la instalación de SIU-Diaguita se debe configurar el archivo instalacion/i__produccion/p__toba_usuarios/rest/rest_arai_usuarios/cliente.ini para indicar los datos de acceso a la API de Araí-Usuarios creados en el paso anterior.

Puede ser configurado mediante el comando de Toba o editando el archivo manualmente.

./bin/toba servicios_web cli_configurar -p toba_usuarios -s rest_arai_usuarios -u https://uunn.local/api-usuarios/v1/usuarios --usuario USR_API_USUARIOS --usuario_pwd PASSWORD_API_USUARIOS --tipo_ws rest
[conexion]
to = "https://uunn.local/api-usuarios/v1/usuarios"
auth_tipo = "basic"
auth_usuario = "USR_API_USUARIOS"
auth_password = "PASSWORD_API_USUARIOS"

Recuerde que es muy importante que las contraseñas utilizadas sean seguras.

A partir de la versión 3.0.1 de SIU-Diaguita se debe indicar el appUniqueId en el archivo instalacion/instalacion.ini como se indica a continuación:

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

SIU-Diaguita dispone de un servicio REST utilizado por Araí-Documentos para informar cuando existen cambios en los estados de los documentos exportados. Para que este servicio sea accesible se debe modificar el parámetro url_protegida en el archivo instalacion/i__produccion/p__diaguita/rest/servidor.ini y tener en cuenta que los demás parámetros se encuentre descomentados como se muestra a continuación.

[settings]
formato_respuesta = "json"
url_protegida = "/(?=^((?!convocatorias-publicas|notificaciones).)+$)/xs"
encoding = "utf-8"

Si la universidad no utiliza la APP de Licitaciones de SIU-Diaguita puede eliminar convocatorias-publicas de la expresión regular del parámetro quedando de la sgte forma:
url_protegida = "/(?=^((?!notificaciones).)+$)/xs"

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

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

host_arai="https://uunn.local/docs"
usr_arai="USUARIO_API_DOCUMENTOS"
pass_arai="PASS_API_DOCUMENTOS"
queue_path="/usr/local/app/temp"
queue_temp_dir = "/tmp"
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/notificaciones/documento"

A continuación se explica cada parámetro:

  • 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/notificaciones/documento

Habilitar API Backend de Araí-Documentos

Para habilitar el Backend de la API de Araí-Documentos se debe modificar el archivo docs.yml.

En este archivo se debe modificar la línea:

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

Y reemplazar /docs/rest/frontend por /docs/rest

Luego se debe realizar el deploy de documentos para actualizar los servicios como se indica aquí

Worker de Documentos

SIU-Diaguita dispone de un proceso que se encarga de enviar de forma asíncrona los documentos exportados, así como de actualizar el estado de los mismos.

Este proceso denominado "worker" se debe mantener corriendo continuamente. Para esto se puede utilizar un sistema de control de procesos como Supervisor (http://supervisord.org/).

El comando de Diaguita que inicia el worker de documentos es:

bin/toba proyecto iniciar_workers_arai_documentos -p diaguita

A continuación se presenta un ejemplo de un archivo de configuración de Supervisor para correr el worker de documentos. Pero si se utilizará esta herramienta se recomienda leer su documentación para configurarlo.

[program:diaguita-worker-documentos]
command=<path_instalacion_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

Habilitar Bundle de Solicitudes de bienes y servicios

Para habilitar el bundle de Solicitudes de bienes y servicios se debe seguir los siguientes pasos:

En primer lugar se recomienda generar un secret para almacenar la contraseña de la API de SIU-Diaguita.

printf "diaguita123" | docker secret create diaguita_api_client_pass -

Luego se debe agregar el secret creado anteriormente y una variable de entorno en prod/arai/huarpe.yml en las secciones que se detallan a continuación.

webapp
environment:
DIAGUITA_API_PASS_FILE: /run/secrets/diaguita_api_client_pass
secrets:
diaguita_api_client_pass

secrets:
diaguita_api_client_pass:
external: true

Finalmente se modificar el archivo prod/arai/huarpe_parameters.yml y agregar las siguientes lineas, utilizando la variable de entorno creada anteriormente para setear la contraseña de acceso a la API de SIU-Diaguita.

  siu.diaguita.api: { auth: [USR_API_DIAGUITA, '%env(file:DIAGUITA_API_PASS_FILE)%', basic], base_uri: 'URL_API_DIAGUITA' }
siu.diaguita.app_unique_id: 'APP_UNIQUE_ID_DIAGUITA'
  • USR_API_DIAGUITA: Usuario para acceder a la API de SIU-Diaguita.
  • URL_API_DIAGUITA: URL de la API de SIU-Diaguita. Ej: https://universidad.edu.ar/diaguita/rest/
  • 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.

Luego de realizar los cambios en el archivo de configuración se debe actualizar el servicio de Huarpe, eliminando en primer lugar el stack y luego realizando nuevamente el deploy de la siguiente manera:

docker stack rm huarpe
docker stack deploy --with-registry-auth -c huarpe.yml huarpe

Archivos de logs

Log de documentos-cli

Documentos-cli es el cliente que se encarga de la comunicación con Araí-Documentos.

Su archivo de log se encuentra en instalacion/i__produccion/p__diaguita/logs/docs-cli.log

Log de libreria queue

La librería queue es la que se encarga de procesar las transacciones que ocurren entre SIU-Diaguita y Araí-Documentos. Es el archivo de log mas importante a analizar para detectar el origen de algún error.

Su archivo de log se encuentra en instalacion/i__produccion/p__diaguita/logs/queue.log