Integración Guaraní con Araí usuarios

Consulta.
Cuando integramos Guaraní con el idp de Araí-Usuarios, los usuarios que están creados en Guaraní se pierden, se pierde el acceso o funcionan los 2 logins?

Gracias.

Hola Mariano,

En el archivo instalacion/saml_onelogin.ini podes configurar de la siguiente manera:


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

Si permite_login_toba = “1” te va a permitir los dos tipos de login (SAML y común), si le poner permite_login_toba = “0” solo va a permitir login por SAML.

saludos.
2

Te hago otra consulta
En el comando docker exec -it ID_CONTENEDOR_USR_CMD bash
Cuando hice el deploy
docker stack deploy --with-registry-auth -c prod/arai/util/usuarios_cmd.yml usr-cmd
Lo que crea es un servicio.

Como obtengo el ID o cuál de todos estos es el contenedor correcto?

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
66fcaf9b1233 hub.siu.edu.ar:5005/siu/expedientes/docs-api:1.3.1 “/entrypoint.sh --re…” 4 days ago Up 4 days (healthy) 80/tcp docs_api.1.kktlldrwi924silz1ne7w45j7
6d544fdbe1d5 ungs/sudocu-estampador:latest “java -Xms512m -Xdeb…” 4 days ago Up 4 days 8080/tcp docs_stamper.1.osr1yc1g4s08p7uicnfjhvl3s
5820270de97f hub.siu.edu.ar:5005/siu/expedientes/docs-api:1.3.1 “/entrypoint.sh --re…” 4 days ago Up 4 days 80/tcp docs_docs-worker.1.motw4mytbcmvt4a9jcggo7rl7
9eb585f2d3e4 bitnami/memcached:1.6.6 “/opt/bitnami/script…” 4 days ago Up 4 days 11211/tcp huarpe_memcached-server.1.u5qhyy4jomaq4yk9ji467ghhy
68d84cc2f5a8 hub.siu.edu.ar:5005/siu/expedientes/huarpe-core:v2.2.11 “/bin/sh -c 'source …” 4 days ago Up 4 days (healthy) 80/tcp huarpe_webapp.1.rbzxz9xu79hys0i5bp9ydtyky
e53240ff1a3d hub.siu.edu.ar:5005/siu/expedientes/arai-usuarios/api:v3.1.4 “/entrypoint.sh --se…” 4 days ago Up 4 days (healthy) 80/tcp usuarios_api.1.vlrymbbqlyr03gppsbhhipczr
0289d010c28a hub.siu.edu.ar:5005/siu/expedientes/arai-usuarios/idp:v3.1.4 “/entrypoint.sh --se…” 4 days ago Up 4 days (healthy) 80/tcp usuarios_idp.1.xnd4svltjqf303jo6gnc2i479
bc96e94b4b7f bitnami/memcached:1.6.6 “/opt/bitnami/script…” 4 days ago Up 4 days 11211/tcp usuarios_memcached-server.1.qqcd7qdfdguafff6yq4nfcekg
520a4165f4f2 hub.siu.edu.ar:5005/siu/expedientes/arai-usuarios/idm:v3.1.4 “/entrypoint.sh --se…” 4 days ago Up 4 days (healthy) 80/tcp usuarios_idm.1.0hnv8oo4ij11mef4nhc4rqp46
c724620e23c3 ungs/sudocu-login:1.2.6 “docker-entrypoint.s…” 4 days ago Up 4 days (healthy) 4000/tcp, 35800/tcp sudocu_login.1.ssvdooseadfn6v205lvr33i06
d98ad8429e61 ungs/sudocu-mpd:1.2.6 “docker-entrypoint.s…” 4 days ago Up 4 days (healthy) 3010/tcp, 35710/tcp sudocu_mpd.1.rfbq3addsosb3oodar65yhrx0
9a17bb83245a traefik:2.2 “/entrypoint.sh --ap…” 4 days ago Up 4 days 80/tcp traefik_reverse-proxy.xvyvlogek6vxy18mi586i88pk.2v5cqce9y2xnak3qs4250nf4b
ba97552cb692 grafana/grafana:master “/run.sh” 4 days ago Up 4 days 3000/tcp loki_grafana.1.ls21oyafr45bk4h9yq6xc4qsu
78327b3f105e ungs/sudocu-api-server:1.2.6 “docker-entrypoint.s…” 4 days ago Up 4 days (healthy) 8080/tcp sudocu_api-server.1.669cvnrwhtuipyw46a7bhyhh5
a5ff5ef01038 ungs/sudocu-mpc:1.2.6 “docker-entrypoint.s…” 4 days ago Up 4 days (healthy) 3010/tcp, 35710/tcp sudocu_mpc.1.1j09669kj5pv9i7nrctc4ng1e
92800d7f9770 ungs/sudocu-gestion:1.2.6 “docker-entrypoint.s…” 4 days ago Up 4 days (healthy) 3020/tcp, 35720/tcp sudocu_gestion.1.snkmuy2ldd0bbwyy37ozutiaq
bbafc58e49d3 grafana/loki:1.5.0 “/usr/bin/loki -conf…” 4 days ago Up 4 days 3100/tcp loki_loki.1.cisf66l4pmfi7z7djti0i8jsa
b6e9fb00c12e siutoba/docker-openldap-arai:openldap-4 “/container/tool/run” 4 days ago Up 4 days 389/tcp, 636/tcp ldap_ldap.1.9p8ciounh2gl7ppa8yrdap2ia
ac84366cd196 redis:5.0.9 “docker-entrypoint.s…” 4 days ago Up 4 days 6379/tcp sudocu_cache.1.n2d1uwcelp84emudcuy1cx2xj
6091562d502d browserless/chrome:1.29-chrome-stable “./start.sh” 4 days ago Up 4 days 3000/tcp sudocu_pdf.1.yhp9kr3nwqgjxtikvaenoiuau

Creo que es IDM pero no estoy 100% seguro

Hola Mariano,

Proba ejecutando el comando docker ps --format ‘{{.Names}} {{.Ports}}’, vas a ver que te lista un contenedor parecido al siguiente:

usuarios_idm.1.uoutnfp53zyd4l1x7yagxcoip 80/tcp

Luego ingresas al mismo:

docker exec -it usuarios_idm.1.uoutnfp53zyd4l1x7yagxcoip bash

Entiendo que estas siguiendo los siguientes pasos: https://expedientes.siu.edu.ar/docs/guarani/#importar-cuentas-en-araí-usuarios

saludos.
2

Ya me pude conectar al contenedor.
Pero al´ejecutar:
./idm/bin/toba proyecto importar_usuarios_arai -f files/usuarios_20211213153414.json -m 2 -p arai_usuarios

Creo que no encuentra el archivo JSON

Uso: toba proyecto importar_usuarios_arai -f path/to/archivo.json -m opcionesComparacion [-t cuentas|personas]
OpcionesComparacion (separadas por ‘,’):
0: Genero, tipo y número de documento
1: Tipo y numero de documento
2: Email
3: UniqueIdentifier
4: No intenta matchear, sólo agrega cuentas nuevas para las personas
Si está seteada la opción -t sólo se importará el tipo que sea especificado. Los valores posibles son ‘cuentas’ o ‘personas’


TIEMPO: 0,203 segundos

El archivo está en el linux.

./prod/arai/util/files/usuarios_20211213153414.json

Lo copié en otro volume y dió el siguiente error.

bash-5.0# ./idm/bin/toba proyecto importar_usuarios_arai -f resources/usuarios_20211213153414.json -m 2 -p arai_usuarios
Existe un problema con la base de datos, por favor verifique los logs


TIEMPO: 0,108 segundos

Hola

Pueden revisar el log de comandos en idm/instalacion/logs_comandos/comandos.log, debe tener un encabezado como el que sigue:


-o-o-o-o-o-
Fecha: 13-12-2021 17:03:18
Version-PHP: 7.3.14
Ruta: /usr/local/app
Argumentos: proyecto importar_usuarios_arai -f files/usuarios_yyyymmddhhmmss.json -m 2 -p arai_usuarios

Saludos!

Te adjunto oel log


comandos.log.txt (3.6 KB)

Hola Mariano, gracias por los logs!!!

Veo que los mismos dicen:


[ERROR][toba] No es posible realizar la conexiŠn a la base. Mensaje: SQLSTATE[08006] [7] fe_sendauth: no password supplied

¿estas ejecutando antes el siguiente comando?

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

Ya que en /usr/local/app/idm/config/parameters.yml hace uso de esos secrets para la conexión a la DB:


db:
        host: $env(DB_HOST)$
        port: $env(DB_PORT)$
        dbname: $env(DB_DBNAME)$
        username: $env(DB_USERNAME)$
        password: $env(DB_PASSWORD)$
        schema: $env(DB_SCHEMA)$
        encoding: $env(DB_ENCODING)$

saludos.
2

Esto lo tengo que ejecutar desde el contenedor.
La ubicación del archivo es /usr/local/app/docker/entrypoint.sh?
Porque si es ese, ya lo ejecuté.

El tema me parece es que no tengo acceso a files como volumne.

Cuando hago un printenv no tengo la variable DB_PASSWORD

TOBA_SESSION_HANDLER=memcache
IDM_SESSION_HANDLER=memcache
INSTITUCION_SIGLA=UCA
VINCULACION_MAIL_PPAL=independiente
HOSTNAME=520a4165f4f2
MAIL_RECOVERY_FROMNAME=“UCA”
SEGURIDAD_ALGORITMO_SALT_FILE=/run/secrets/usuarios_pass_salt
MAILER_HOST=smtp.office365.com
SECOND_FACTOR_TOKEN_LIFETIME=3600
ENTORNO_PRODUCCION=0
MEMCACHED_PASS=
LDAP_GROUPS_OU=groups
IDM_URL=https://arai.uca.edu.ar/usuarios
INSTITUCION_EMAIL=sistemas@uca.edu.ar
SEGURIDAD_INFO_PASS=“La contraseña debe tener al menos 8 caracteres, entre letras mayúsculas, minúsculas, números y símbolos, no pudiendo repetir caracteres adyacentes”
IDP_URL=https://arai.uca.edu.ar/idp
MEMCACHED_HOST=memcached-server
MAILER_CLAVE=*******
PWD=/
SEGURIDAD_INTENTOS_ACTIVAR_RECAPTCHA=3
MAIL_VERIFIER_SUBJECT=“Verificación de Email SIU-Arai”
DB_ENCODING=LATIN1
TOBA_USUARIO_EMAIL=admin@institucion.edu.ar
SECOND_FACTOR_SUBJECT=“Segundo Factor de Autenticación SIU-Arai”
MAIL_RECOVERY_FROM=noreply@uca.edu.ar
TOBA_SESSION_SAVE_PATH=memcached-server:11211
ASSETS_DIR=/usr/local/app/resources
TZ=America/Argentina/Buenos_Aires
DB_PORT=5432
LDAP_BINDPASS_FILE=/run/secrets/usuarios_ldap_admin_pass
LDAP_USERS_ATTR=ou
HOME=/root
MAILER_HELO=mail.uca.edu.ar
IDM_PERMITE_MAILS_DUPLICADOS=false
TOBA_USUARIO=admin
MAIL_VERIFIER_FROM=noreply@uca.edu.ar
DB_SCHEMA=usuarios
MEMCACHED_USER=
DB_PASSWORD_FILE=/run/secrets/usuarios_db_pass
IDM_FORMATO_UID=simple
MAIL_RECOVERY_TOKEN_LIFETIME=432000
MAILER_PORT=587
MAIL_RECOVERY_REPLYTO=noreply@uca.edu.ar
IMAGE_MAX_SIZE_APLICACION=200000
IDM_URL_ALIAS=/usuarios
ASSETS_URL=https://arai.uca.edu.ar/resources
LDAP_HOST=ldap
SECOND_FACTOR_FROM=noreply@uca.edu.ar
LDAP_PORT=389
SEGURIDAD_REINICIAR_TIEMPO_RECAPTCHA=3600
IDM_SESSION_NAME=ARAI_IDM_SESSION
DB_USERNAME=postgres
SEGURIDAD_RECAPTCHA_SITIO=6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
SEGURIDAD_LARGO_PASS=8
TOBA_ALIAS_TOBA_EDITOR=/toba_editor
TERM=xterm
DB_HOST=arbapgsql116.uca.local
LDAP_USERS_OU=usuarios
MEMCACHED_PORT=11211
CACHE_BACKEND=memcached
IDM_URL_HOST=http://localhost
MAIL_VERIFIER_REPLYTO=noreply@uca.edu.ar
LDAP_TLS=0
SHLVL=1
LDAP_NODES=
SEGURIDAD_ACTIVAR_SEGUNDO_FACTOR=true
SEGURIDAD_ALGORITMO_PASS=crypt
IDM_LOG_HANDLER=errorlog
DB_DBNAME=arai_usuarios
LDAP_BINDUSER=cn=admin,dc=arai,dc=uca,dc=local
LDAP_METHOD=user
MAIL_RECOVERY_SUBJECT=“Recuperar contraseña SIU-Arai”
SECOND_FACTOR_FROMNAME=“UCA”
MAIL_VERIFIER_FROMNAME=“UCA”
LDAP_SEARCHBASE=dc=arai,dc=uca,dc=local
IDM_LOG_LEVEL=ERROR
MAIL_VERIFIER_TOKEN_LIFETIME=86400
TOBA_ALIAS_NUCLEO=/toba_gestion
MAILER_AUTH=1
TOBA_PASSWORD=*******
IMAGE_MAX_SIZE_USUARIO=204800
SECOND_FACTOR_REPLYTO=noreply@uca.edu.ar
LDAP_BINDPASS=admin
LDAP_ACCOUNTS_OU=usuariosCuentas
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAILER_FROM=noreply@uca.edu.ar
LDAP_GROUPS_ATTR=ou
SEGURIDAD_DURACION_DIAS_PASS=120
TOBA_FORZAR_HTTPS=off
MAILER_USUARIO=noreply@uca.edu.ar
LDAP_ACCOUNTS_ATTR=ou
SEGURIDAD_RECAPTCHA_CLAVE=6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe
MAILER_SEGURIDAD=ssl
INSTITUCION_URL=http://uca.edu.ar
_=/bin/printenv
OLDPWD=/usr/local/app

Esto lo tengo que ejecutar desde el contenedor. La ubicación del archivo es /usr/local/app/docker/entrypoint.sh? Porque si es ese, ya lo ejecuté.

Hacelo tal cual dice acá:

Parado en el directorio /usr/local/app:


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

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

El entrypoint.sh que esta en la raíz.

Proba con eso, y si no funciona lo vemos con la gente de Araí.

saludos.
2

Ahora funcionó pero me da un error por un usuario sin mail.

El usuario uniqueIdentifier=10328226 no posee un mail válido.

Creo que debe haber unos cuantos usuarios así.

Se pueden saltear esos usuarios o que los cree igual?

Perfecto!!!

El usuario uniqueIdentifier=10328226 no posee un mail válido. Creo que debe haber unos cuantos usuarios así. Se pueden saltear esos usuarios o que los cree igual?

Te dejo la documentación de Importación de usuarios y cuentas, me parece que no hay opción para poder pasar emails vacíos.

Podes hacer dos cosas:

  1. Asignar un email al usuario en la operación Administrar personas y volver a hacer la exportación.

  2. En la exportación ya hecha revisar los que tienen el mail vacío y completarlo.

Vamos a tenerlo en cuenta para mejorar el comando bin/guarani exportar_usuarios_arai y que avise que hay personas sin email.

saludos.
2

Leonle, avancé pero hasta ahí nomás.

Corregimos todos los mails que tenían espacios y completamos los vacíos.
Pero tengo otros casos (el que saltó ahora es que no tiene @)

Me podés pasar cuales son las comprobaciones que hace para hacer las mismas nosotros?

Gracias.

Hola Mariano,

La query que devuelve los usuarios a exportar la podes encontrar en la función getDatosUsuarios de php/extension_toba/guarani_modelo.php, ejecuta la siguiente query:


SELECT 
                                        DISTINCT vp.usuario,
                                        vp.nombres_elegido as nombres,
                                        vp.apellido_elegido as apellidos,
                                        vp.apellido_nombres_elegido as nombre_completo,
                                        vp.sexo,
                                        vp.tipo_documento,
                                        vp.desc_tipo_documento,
                                        vp.nro_documento,
                                        p.bloqueado::varchar(1),
                                        COALESCE((
                                                        SELECT mdp_personas_contactos.email
                                                        FROM mdp_personas_contactos
                                                        WHERE mdp_personas_contactos.persona = p.persona
                                                        AND contacto_tipo IN ('MP', 'MS', 'MI')
                                                        ORDER BY CASE mdp_personas_contactos.contacto_tipo 
                                                WHEN 'MP' THEN 1
                                                WHEN 'MS' THEN 2
                                                WHEN 'MI' THEN 3
                                                ELSE 4
                                        END
                                                        LIMIT 1)) AS emails,
                                        p.clave,
                                        'crypt' as autentificacion,
                                        ga.tipo_usuario
                                FROM 
                                        vw_personas as vp
                                        JOIN mdp_personas as p ON (vp.persona = p.persona)
                                        JOIN mdp_personas_grupo_acc as ga ON (ga.persona = p.persona)
                                WHERE
                                        ga.tipo_usuario IN('Docente', 'Gestion')
                                        AND vp.usuario IS NOT NULL

                                ORDER BY
                                        ga.tipo_usuario DESC, vp.usuario;

Habría que revisar cuales de esos usuarios tiene mal el email.

En dicha función agrega esto al final:


		$usuarios = $this->get_base()->consultar($sql);
		foreach($usuarios as $key => $usuario) {
			if (empty($usuario['emails'])) {
				var_dump("{$usuario['nombre_completo']} no tiene email asignado.");
				unset($usuarios[$key]);
			} elseif(!filter_var($usuario['emails'], FILTER_VALIDATE_EMAIL)) {
				var_dump("{$usuario['nombre_completo']} tiene email invalido.");
				unset($usuarios[$key]);
			}
		}
		return $usuarios;

Luego al ejecutar el comando bin/guarani exportar_usuarios_arai te va a mostrar por consola que usuario tiene en email invalido.

saludos.
4

Leonel, estamos corrigiendo todos los errores de carga.

Pero me anticipo y te consulto otra cosa.

En “Configurar parámetros SAML en SIU-Guaraní”

Pide configurar instalacion/instalacion.ini que ya fue configurado en el paso “Exportar cuentas de usuarios de Guaraní”

Este archivo es en Guaraní o en Araí?

Una pregunta similar corre para instalacion/saml_onelogin.ini que existe en Araí y no en Guaraní.

Gracias.

Hola Mariano,

En "Configurar parámetros SAML en SIU-Guaraní"

Pide configurar instalacion/instalacion.ini que ya fue configurado en el paso “Exportar cuentas de usuarios de Guaraní”

Si, esta duplicado eso, quisimos aclara que hay que tenerlo configurado para los dos escenarios.

Este archivo es en Guaraní o en Araí?

Una pregunta similar corre para instalacion/saml_onelogin.ini que existe en Araí y no en Guaraní.

Todos los archivos a configurar de esa documentación son de Guaraní (Gestión y Autogestión).

Referencia:

saludos.
2