SIU-Guarani/version3.18.0/interfaces/gestion-arai
SIU-Araí
SIU-Araí es la plataforma integradora de servicios del SIU. Cada uno de los sistemas SIU son módulos dentro de la plataforma que interactúan entre sí, consumiendo y ofreciendo servicios. Esté apartado está enfocado en la integración de SIU-Guaraní en la plataforma SIU-Araí, se asume que los sistemas ya están instalados y funcionando. Para ver documentación específica de Araí hágalo desde aquí.
Vinculando SIU-Guaraní Gestión con SIU-Araí
Antes de registrar la aplicación en Araí debemos verificar que en el archivo <path_gestion>/instalacion/i__desarrollo/instancia.ini
dentro de la sección [guarani] contenga el entrada full_url
path = "<path_gestion>"
url = "<url_gestion>"
url_pers = "<url_gestion_pers>"
full_url = "<http://full_url>" <===> URL completa donde esta publicado el proyecto
Generar las claves para encriptar
Llegado a este punto, durante la instalación del proyecto y por única vez, será necesario como pre-requisito generar y configurar la clave para encriptar la sincronización de api REST con Araí . Para hacerlo, se debe correr el siguiente comando parados en <path_gestion>:<path_gestion>/instalacion/instalacion.ini
del proyecto, la entrada arai_sync_key_file
con la ruta donde se aloja la clave previamente creada.arai_sync_key_file=/ruta/donde/guardar/arai-sync.key
Variables de Entorno
Araí-Cli utiliza variables de entorno para acceder a archivos y otras tareas, hay que asegurarse de que las siguientes variables estén instanciadas correctamente de acuerdo al entorno de instalación de la aplicación (archivos <path_gestion>/entorno_toba.env
y <path_gestion>/instalacion/entorno_toba.env
).
export TOBA_PROYECTO=guarani
export TOBA_PROYECTO_DIR=<path_gestion>
export TOBA_INSTALACION_DIR=<path_gestion>/instalacion
export ARAI_REGISTRY_USER=<arai_registry_user>
export ARAI_REGISTRY_PASS=<arai_registry_pass>
Nota: <arai_registry_user>
y <arai_registry_pass>
se obtienen de la instalación de Registry de SIU-Araí.
Registrar el proyecto
Si todo está en orden, por única vez, el proceso de registración a la plataforma SIU-Araí de la aplicación se concreta haciendo uso de la librería previamente con el siguiente comando:
bin/arai-cli registry:add --backend sodium_compat --maintainer <nombre_encargado_admin> --maintainer-email <email_encargado_admin> <url_arai_registry>
Nota: Se debe proporcionar la url válida del servicio SIU-Araí Registry, junto con los datos del administrador.
Sincronizar el proyecto
Siempre que registremos alguna aplicación a Araí-Registry, es necesario realizar un registr:sync
para que nuestra aplicación localmente tenga los datos más actualizados acerca de los diferentes servicios, aplicaciones y/o apis que querramos consumir. Además, si nuestra aplicación localmente agregó una nueva característica (ej. una http://toba.siu.edu.ar/trac/toba/wiki/Referencia/Rest api REST]), este comando informará a Araí-Registry la buena nueva.
Este paso es necesario realizarlo también en Araí-Usuarios, para que este sistema se entere de la presencia de una nueva aplicación.
A partir de este momento, al ingresar al proyecto, este debiera de redirigirnos a la página de login centralizado de la plataforma SIU-Araí. Una vez el usuario ha ingresado, nos redirige nuevamente hacia la aplicación. La misma debiera de contar además con el menú de aplicaciones integrado, con las aplicaciones SIU o de terceros que tengamos registrados.
Conectando con SIU-Araí Usuarios
Como el login a partir de este momento solo se hará através de SIU-Araí y no desde la base de negocio deberíamos indicarle a Guaraní donde está la API de SIU-Araí Usuarios para que pueda traernos los usuarios que queremos vincular a la persona existente.
Se debería agregar el siguiente archivo:
<path_gestion>/instalacion/i__desarrollo/p__guarani/rest/arai_usuarios/cliente.ini
to = <url_arai_usuarios>/rest/
auth_tipo = basic
auth_usuario = <arai_usuarios_user>
auth_password = <arai_usuarios_pass>
A partir de ahora cuando queramos asignar un usuario a una persona, aparecerá un combo editable donde podremos buscar los usuarios existentes en SIU-Araí.
Entonces de está forma necesitamos editar la persona en SIU-Guaraní Gestión (operación Administrar Personas solapa Acceso al sistema), y vincularla con el usuario de SIU-Araí.
Conectando con SIU-Araí Documentos
Para la creación de documentos en SIU-Araí necesitamos realizar la siguiente configuración en SIU-Guaraní Gestión.
Se debería agregar el siguiente archivo:
<path_gestion>/instalacion/arai_documentos.ini
usr_arai = "<arai_documentos_user>"
pass_arai = "<arai_documentos_user>"
Nota: <url_arai_documentos>
es la URL base de SIU-Araí Documentos (sin el sufijo "/rest/backend/").
Vinculando SIU-Guaraní Autogestión con SIU-Araí
Ir a la aplicación de Araí Usuarios y en la operación Aplicaciones dar de alta una nueva aplicación para 3w, para luego poder vincular los usuarios de tipos de docente con el autogestión y huarpe. Se debe ingresar la url de 3w y también el appUniqueId que luego se utilizará para los siguientes pasos. Un ejemplo podría ser como el siguiente:
En la instalación de Araí Usuarios, que puede ser un docker o una instalación local, pararse sobre la carpeta del mismo y correr el siguiente comando:
--Donde:
-- <url_3w> es la url de autogestión a la cual queremos darle un acceso por el proveedor de indentidad Siu-Araí.
-- <appUniqueId3w> es el identificador que hemos utilizado en el paso anterior cuando dimos de alta la aplicación en el Araí Usuarios
Ir a <path_3w>/instalacion/saml y correr el siguiente comando:
Abrir el archivo settings.php y dejar el siguiente contenido.
//settings y advanced_settings de la libreria de saml.
$url_autogestion = '<url_3w>';
$url_idp = '<url_arai>';
return $settings = array (
// If 'strict' is True, then the PHP Toolkit will reject unsigned
// or unencrypted messages if it expects them signed or encrypted
// Also will reject the messages if not strictly follow the SAML
// standard: Destination, NameId, Conditions ... are validated too.
'strict' => false,
// Enable debug mode (to print errors)
'debug' => true,
// Service Provider Data that we are deploying
'sp' => array (
// Identifier of the SP entity (must be a URI)
'entityId' => $url_autogestion.'/acceso',
// Specifies info about where and how the <AuthnResponse> message MUST be
// returned to the requester, in this case our SP.
'assertionConsumerService' => array (
// URL Location where the <Response> from the IdP will be returned
'url' => $url_autogestion.'/acceso?auth=saml',
// SAML protocol binding to be used when returning the <Response>
// message. Onelogin Toolkit supports for this endpoint the
// HTTP-Redirect binding only
'binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
),
// Specifies info about where and how the <Logout Response> message MUST be
// returned to the requester, in this case our SP.
'singleLogoutService' => array (
// URL Location where the <Response> from the IdP will be returned
'url' => $url_autogestion.'/acceso/logout',
// SAML protocol binding to be used when returning the <Response>
// message. Onelogin Toolkit supports for this endpoint the
// HTTP-Redirect binding only
'binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
),
// Specifies constraints on the name identifier to be used to
// represent the requested subject.
// Take a look on lib/Saml2/Constants.php to see the NameIdFormat supported
'nameIdFormat' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress',
// Usually x509cert and privateKey of the SP are provided by files placed at
// the certs folder. But we can also provide them with the following parameters
// 'x509cert' => file_get_contents(\siu\bootstrap::get_dir_instalacion() . '/saml/saml.crt'),
// 'privateKey' > file_get_contents(\siu\bootstrap::get_dir_instalacion() . '/saml/saml.pem'),
),
// Identity Provider Data that we want connect with our SP
'idp' => array (
// Identifier of the IdP entity (must be a URI)
'entityId' => $url_idp.'/saml2/idp/metadata.php',
// SSO endpoint info of the IdP. (Authentication Request protocol)
'singleSignOnService' => array (
// URL Target of the IdP where the SP will send the Authentication Request Message
'url' => $url_idp.'/saml2/idp/SSOService.php',
// SAML protocol binding to be used when returning the <Response>
// message. Onelogin Toolkit supports for this endpoint the
// HTTP-POST binding only
'binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
),
// SLO endpoint info of the IdP.
'singleLogoutService' => array (
// URL Location of the IdP where the SP will send the SLO Request
'url' => $url_idp.'/saml2/idp/SingleLogoutService.php',
// SAML protocol binding to be used when returning the <Response>
// message. Onelogin Toolkit supports for this endpoint the
// HTTP-Redirect binding only
'binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
),
// Public x509 certificate of the IdP
// 'x509cert' => \siu\bootstrap::get_dir_instalacion() . '/saml/saml.crt',
/*
*Instead of use the whole x509cert you can use a fingerprint
*(openssl x509 -noout -fingerprint -in "idp.crt" to generate it)
*/
'certFingerprint' => '65:C0:CE:76:C5:41:8B:C1:D6:0F:C3:E6:4E:22:E5:58:06:E9:94:F1',
),
//Advanced settings
// Security settings
'security' => array (
/** signatures and encryptions offered */
// Indicates that the nameID of the <samlp:logoutRequest> sent by this SP
// will be encrypted.
'nameIdEncrypted' => false,
// Indicates whether the <samlp:AuthnRequest> messages sent by this SP
// will be signed. [The Metadata of the SP will offer this info]
'authnRequestsSigned' => false,
// Indicates whether the <samlp:logoutRequest> messages sent by this SP
// will be signed.
'logoutRequestSigned' => false,
// Indicates whether the <samlp:logoutResponse> messages sent by this SP
// will be signed.
'logoutResponseSigned' => false,
/* Sign the Metadata
False || True (use sp certs) || array (
keyFileName => 'metadata.key',
certFileName => 'metadata.crt'
)
*/
'signMetadata' => false,
/** signatures and encryptions required **/
// Indicates a requirement for the <samlp:Response>, <samlp:LogoutRequest> and
// <samlp:LogoutResponse> elements received by this SP to be signed.
'wantMessagesSigned' => false,
// Indicates a requirement for the <saml:Assertion> elements received by
// this SP to be signed. [The Metadata of the SP will offer this info]
'wantAssertionsSigned' => false,
// Indicates a requirement for the NameID received by
// this SP to be encrypted.
'wantNameIdEncrypted' => false,
),
// Contact information template, it is recommended to suply a technical and support contacts
'contactPerson' => array (
'technical' => array (
'givenName' => 'CAMBIAR',
'emailAddress' => 'CAMBIAR'
),
'support' => array (
'givenName' => 'CAMBIAR',
'emailAddress' => 'CAMBIAR'
),
),
// Organization information template, the info in en_US lang is recomended, add more if required
'organization' => array (
'en-US' => array(
'name' => 'CAMBIAR',
'displayname' => 'CAMBIAR',
'url' => 'CAMBIAR.com'
),
),
);
Una vez terminado esto ir al archivo <path_3w>/instalacion/login.php y configurar lo siguiente:
'activo' => true,
'clase' => 'modelo\\autenticacion\\auth_saml',
'parametros' => array(
'settings_file' => \siu\bootstrap::get_dir_instalacion() . '/saml/settings.php',
'saml_uid' => 'userAccounts',// 'urn:oid:0.9.2342.19200300.100.1.1', //se matchea con local_uid
'local_uid' => 'usuario', //puede ser 'persona'
),
),
Agregar en instalacion.ini de gestion estas variables según lo que se tiene en araí usuarios para cada aplicación
appUniqueId3w=
Migrando usuarios de Gestión a Araí
Exportación de usuarios
Los usuarios actuales que poseemos en gestión los deberiamos tener disponibles en una cuenta de Araí. Para exportarlos deberíamos realizar lo siguiente:
Este comando posee las siguiente opciones:
-f => Nombre del archivo donde se exportaran los usuarios, por defecto -> usuarios_ . date('YmdHis'),
-m => Nombre del responsable, por defecto -> toba,
-e => Mails del responsable, por defecto -> toba
Importando usuarios a Araí
Para importar las cuentas, el módulo SIU-Araí: Usuarios proporciona un comando de consola, que nos permite cargar la información de un conjunto de usuarios y/o cuentas, todo a partir de un archivo en formato json. Para ejecutar el comando primero será necesario cargar el entorno, para lo cual podemos ejecutar:. ./entorno_toba.env
Una vez cargado el entorno, es posible ejecutar la exportación de la siguiente forma:
Este comando procesará un archivo en la ruta /ruta/modulo/siu/instalacion/usersExportFiles/cuentas-xxx-arai.json
importando las definiciones de personas y/o cuentas, teniendo en cuenta las opciones de comparación.
Al momento de importar, es necesario elegir como se comparan los datos de usuarios/personas a importar con los que pueden existir, mediante el argumento comparador
. Este puede ser uno de los siguientes:
-
0
: Género, tipo y número de documento -
1
: Tipo y número de documento -
2
: Email -
3
: atributo UniqueIdentifier -
4
: No intenta matchear, sólo agrega cuentas nuevas para las personas
De forma opcional, se puede indicar con el argumento -t
si se desea importar la información de cuentas
o solamente la información de personas
.
Una vez realizada la importación, el proceso nos mostrará un resumen de las acciones realizadas, así como los posibles inconvenientes que pueden haber surgido al momento de importar y comparar los datos existentes.
Para más información puede consultar la documentación de Araí