Importación de usuarios y cuentas
Una de las funciones de SIU-Araí: Usuarios es la provisión de autenticación para las distintas aplicaciones registradas.
Para llevar adelante esa funcionalidad, necesitamos saber las cuentas de los usuarios en cada una de ellas.
Lo que detallamos a continuación es como realizar la importación de usuarios (personas) y/o cuentas, según el caso.
Consideraciones iniciales
Es necesario contar con una instalación de SIU-Araí: Usuarios en la versión 3.0
.
La aplicación para la que se importarán datos debe estar registrada en SIU-Araí: Usuarios.
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
Cabe aclarar que por los datos manejados un usuario
puede ser tanto una persona física como jurídica.
Una representación esquemática sería:
persona
|
usuario <──────> cuenta <──────> aplicacion
| | |
svier sergio diaguita
| | |
svier servier pilaga
Se debe contar así mismo con acceso a la configuración por si es necesario modificar algún parámetro. Se recomienda hacer un backup del contenido LDAP y Postgres antes de continuar.
Configuraciones que afectan la importación
Dentro de los parámetros se encuentran los que controlan el comportamiento del sistema con las claves de los usuarios. A saber:
Variable |
---|
SEGURIDAD_ALGORITMO_SALT |
SEGURIDAD_ALGORITMO_PASS |
SEGURIDAD_LARGO_PASS |
SEGURIDAD_DURACION_DIAS_PASS |
Es importante que previo a iniciar el proceso verifique estos datos y los modifique si es que resulta necesario
Importación vía consola
Este mecanismo requiere como mínimo un archivo JSON provisto por la aplicación origen de los datos y un criterio de comparación de los mismos con los que ya figuran en SIU-Araí usuarios.
Desde una consola con acceso a los comandos administrativos de SIU-Araí: Usuarios, invocar el siguiente comando, reemplazando $VERSION
por el valor adecuado:
docker run --rm -it \
--env-file usuarios.env \
--volume path/to/archivo:/tmp/archivo.json
hub.siu.edu.ar:5005/siu-arai/Arai-Usuarios/idm:$VERSION \
-- idm/bin/toba proyecto importar_usuarios_arai -f /tmp/archivo.json -m opcionesComparacion [-t cuentas|personas] -p arai_usuarios"
Las opciones disponibles son las siguientes:
OpcionesComparacion (separadas por ','):
0: Genero, tipo y número de documento
1: Tipo y numero de documento
2: Email
3: Identificador de usuario (uniqueIdentifier)
4: No intenta matchear, sólo agrega cuentas nuevas para las personas
5: Nro. empleado (employeeNumber)
Opciones de importación (solo procesa el tipo indicado con -t)
cuentas
personas
Si la aplicación de origen fue desarrollada con SIU-Toba, ya cuenta con un mecanismo para generar el archivo JSON.
Al finalizar la ejecución del comando se muestran los resultados del proceso:
--------------------------------------------------------------------
Resumen del archivo de importación: /usr/local/usuarios_20200527150836.json
----------------------------------------------
Cantidad de usuarios Arai importados: 0
Cantidad de usuarios Arai mergeados: 1
Cantidad de usuarios Arai en conflictos: 1
Cantidad de usuarios ignoradas: 0
---------------------------------------------------------
Cantidad de cuentas agregadas: 0
Cantidad de cuentas mergeadas: 1
Cantidad de cuentas desvinculadas agregadas: 0
Cantidad de cuentas desvinculadas mergeadas: 0
Cantidad de cuentas ignoradas: 0
--------------------------------------------------------------------
En caso de visualizarse alguno de los siguientes renglones con un valor distinto de cero (0):
Cantidad de usuarios ignoradas: 1
Cantidad de cuentas ignoradas: 3
Se generará dentro de la carpeta ./idm/instalacion/migration/ignoreImport/
un archivo en formato JSON, que contendrá aquellos registros ignorados por no tener los datos requeridos para operar con el comparador que se usó.
La intención es que podamos tomar este archivo JSON de datos ignorados y volver a importarlos utilizando algún otro comparador más adecuado, repitiendo este proceso tantas veces sea necesario mientras se generan registros ignorados.
Nota: algunas veces puede ser necesario realizar algún ajuste sobre el conjunto de datos ignorados que contiene el JSON, de modo de poder importarlos con un comparador particular (ej, adicionar un email, un legajo o un documento).
Formato archivo JSON
Para facilitar la generación del archivo por parte de sistemas/módulos propios les brindamos información sobre el formato y consideraciones puntuales en la siguiente página
Manejo de conflictos
Luego de agregar usuarios
puede ser que se presenten conflictos con datos existentes previamente en la plataforma, estos conflictos surgen cuando durante el proceso de importación no se pudieron matchear adecuadamente los datos informados contra otros existentes y se necesita clarificar la situación final.
Para solucionar este tipo de inconvenientes, dentro de SIU-Araí: Usuarios nos dirigimos hacia la operación Tareas->Fusionar Usuarios
la cual nos presentará un listado con todos los uid
que tuvieron inconvenientes.
Para cada uno de dichos renglones, deberemos seleccionar manualmente los valores correctos para los atributos básicos del usuario
mediante una serie de combos, una vez seleccionados los valores adecuados presionamos Resolver Conflictos
e indicamos que deseamos continuar frente a la pregunta del sistema.
A medida que vamos resolviendo los conflictos se van eliminando registros del listado.
Importación vía api
Otro mecanismo disponible para agregar usuarios
o cuentas
es haciendo uso de la API REST de SIU-Araí: Usuarios
En este caso el procesamiento se puede iniciar directamente desde la aplicación origen mediante solicitudes HTTP, sin embargo se deberán realizar varias interacciones por cada registro a procesar.
Endpoints a utilizar durante el proceso
${URL_API}/v2/usuarios
${URL_API}/v2/aplicaciones
Navegando a la URL donde se encuentra publicada la API (${URL_API}/v2/
) podemos obtener información de los distintos parámetros que necesitan los recursos según la operación que invoquemos.
Como en el caso del mecanismo anterior, necesitamos definir un criterio de comparación con los datos que ya se encuentran cargados en SIU-Araí: Usuarios para no agregar innecesariamente información existente u obtener errores salvables.
Buscando el usuario
Lo primero a realizar es confirmar que el usuario
efectivamente no existe, para ello realizamos un pedido GET a ${URL_API}/v2/usuarios?filtro=condicion;valor
por ej:
curl -X GET "http://siu:81/api/v2/usuarios?tipoDocumento=es_igual_a%3BDNI&numeroDocumento=es_igual_a;24983157" -H "accept: application/json"
Este pedido tiene uno de los siguientes status codes en la repuesta:
200
Elusuario
existe y nos devuelve una estructura con los siguientes datos
[
{
"uid": "string",
"identificador": "string",
"nombre": "string",
"apellido": "string",
"email": "string",
"persona": "integer",
"bloqueado": "boolean",
"jpegPhoto": "string"
}
]
500
Hubo un error en el servidor y no se pudo procesar el pedido, no seguir adelante404
Elusuario
no existe
Agregando un usuario
En el ultimo caso del punto anterior, lo que debemos hacer es agregar al usuario
y para ello realizaremos un pedido POST a ${URL_API}/v2/usuarios
indicando los datos requeridos, la estructura minima será similar a la del siguiente ejemplo:
{
"identificador": "aHirschau",
"nombre": "Antony",
"apellido": "Hirschau",
"email": "aHirschau@unn.edu.ar",
"password": "x_f74KH=ADR"
}
Entonces nuestro pedido HTTP quedaria de esta manera
curl -X POST "http://siu:81/api/v2/usuarios" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \"identificador\": \"aHirschau\", \"nombre\": \"Antony\", \"apellido\": \"Hirschau\", \"email\": \"aHirschau@unn.edu.ar\", \"password\": \"x_f74KH=ADR\"}"
Nuevamente, esta interacción nos puede devolver uno de los siguientes estados:
201
Elusuario
se creo y nos devuelve su identificadoruuid
400
Hay un error en los datos ingresados, podemos corregir y volver a intentar406
Hubo un error agregando alusuario
, no seguir adelante501
Hubo un error agregando un atributo delusuario
Agregando una cuenta
Si nuestra búsqueda de usuario
nos retorno un resultado, lo adecuado entonces sería intentar agregar una cuenta asociada a la aplicación.
Como requisito previo, debemos contar con el identificador de nuestra aplicación el cual podemos descubrir realizando un pedido GET a ${URL_API}/v2/aplicaciones
indicando el filtro adecuado.
Una vez contamos con ambos datos, lo que haremos es realizar un pedido HTTP POST a ${URL_API}/v2/aplicaciones/{identificador}/cuentas
, enviando en el body una estructura como la siguiente:
{
"identificador_aplicacion": "string",
"cuenta": "string",
"identificador_usuario": "string"
}
Donde
identificador_aplicacion
es el dato obtenido en el pedido GETcuenta
es el identificador con que el usuario se logueaba en la aplicación de origenidentificador_usuario
se corresponde con el campouid
del pedido que nos devolvio los datos delusuario
Esta interacción nos puede brindar una de las siguientes respuestas:
201
Se asocio lacuenta
a la aplicación y elusuario
404
La aplicación indicada no existe406
Hubo un error agregando a lacuenta
a la aplicación, no seguir adelante407
Elusuario
no existe en SIU-Araí: Usuarios
En caso de obtener un error 404
o 407
verifique los datos enviados y vuelva a intentarlo.