SIU-Arai/usuarios/integracion-inicial-toba

De SIU
Saltar a: navegación, buscar
Siu-arai iso.png

Integrando una aplicación Toba

La integración de una aplicación propia desarrollada en SIU-Toba tiene múltiples facetas. Es posible configurar para disfrutar de:

  • Single Sign-on y Single Logout por medio de SAML
  • Visualizar el ícono de aplicación en el menú de aplicaciones integrado o AppLauncher
  • Proveer autoconfiguración para una api/servicio de la aplicación que de desea sea consumida por otras aplicaciones registradas en la plataforma
  • Proveer autoconfiguración para una api/servicio que la aplicación consume de otros registrados en la plataforma.

Requisitos previos

Utilizar la plataforma SIU-Arai

Es un poco obvio, pero es necesario contar con Arai-Registry y Arai-Usuarios funcionando adecuadamente, para poder registrar una aplicación y hacer uso del IdP e IdM que provee la plataforma.

Dependencias del Sistema Operativo

Para poder integrar correctamente una aplicación a la plataforma SIU-Araí en la versión 2, se tiene que instalar y dejar configurado de manera adecuada las versiones de las librerías relacionadas con Sodium. En esta guía se describe requerimientos y versiones compatibles. Esto es necesario realizarlo para poder generar adecuadamente las claves de encriptación.

Dependencias con Composer

Es recomendable que el proyecto se gestione mediante composer para la instalación y actualización de librerías y dependencias. En la wiki de SIU-Toba, se encuentra una referencia detallada de como realizar este paso.

Una vez se tenga el archivo composer.json, se debe editar y agregar una serie de dependencias:

  1. SIU-Toba en la versión v3.0.22 o superior
  2. La librería arai-cli en la versión v2.5.0 o superior
  3. La librería Halite, en la versión v1.6.0. Es requerida para generar las claves de encriptación
  ...
  "require": {
    "paragonie/halite": "1.6.0",
    "siu-toba/framework": "^3.0.30",
    "siu/arai-cli": "^2.5.0"
  },
  "autoload": {
    "psr-4": { "": "src" }
  },
  ...

Luego de realizar el cambio, siempre se debe proceder a actualizar la lista de dependencias:

composer update

Integración con Toba-Usuarios

Si el proyecto utiliza la gestión de usuarios que proporciona SIU-Toba, este punto es transparente y no requiere de cambios adicionales.

Claves para encriptación

A partir de la versión 2.0 de la plataforma, todo el intercambio que se produce entre un módulo y SIU-Arai: Registry, requiere tener generado y configurado una clave que será utilizada para encriptar la información sensible. La librería arai-cli permite generar manualmente estas claves. Adicionalmente, el instalador de proyectos SIU permite automatizar esta generación y configuración al momento de realizar la instalación del proyecto.

Configuración para servicios REST

Si la aplicación que se intenta sincronizar es consumidor y/o proveedor de servicios de api tipo REST, será necesario que se tenga correctamente configurado los datos de acceso tanto en el cliente.ini como en el servidor.ini según corresponda. Remitirse a la documentación del framework SIU-Toba disponible al respecto.

Adicionalmente, en el archivo arai.json tendrán que asegurarse de tener configurado las entradas provide y/o consume con los servicios deseados.

Configuración para servicios de toba_usuarios

Si la aplicación que se intenta sincronizar hace uso de toba_usuarios, será necesario que se tenga correctamente configurado el cliente REST de dicho proyecto. Para ello, tendrán que editar el archivo /ruta/proyecto/instalacion/i__produccion/p__toba_usuarios/rest/rest_arai_usuarios/cliente.ini.

Adicionalmente, en el archivo arai.json tendrán que asegurarse de tener configurado en consume api:siu/arai-usuarios.

Configuración de la URL global de la instancia

Las instalaciones Toba por defecto tienen un atributo full_url en el archivo /ruta/proyecto/instalacion/instancia.ini que debe contener la URL completa y accesible del proyecto. Sirve para sincronizar en Registry e indicar el punto de acceso de la aplicación y de las api. Es importante que esta URL no termine en /.

Integrar al menú de aplicaciones

SIU-Toba proporciona una implementación de barra o lanzador de apliaciones, desde el cual se puede acceder a todas las aplicaciones integradas a la plataforma SIU-Arai (siempre y cuando tenga permiso de acceder el usuario particular). Esto se activa configurando el archivo proyecto.ini y agregando la siguente entrada:

[proyecto]
...
;Esta entrada activa el uso del appLauncher
app_launcher = 1

Integrar a Arai-Registry la aplicación

Gracias a la librería arai-cli, se pueden registrar las aplicaciones a la plataforma SIU-Arai de forma sencilla. En la documentación de Arai-Registry se describe mayores detalles al respecto.

Configurar las necesidades

Arai-Registry permite indicar que servicios consume y proporciona una aplicación. Para ello lo primero a realizar es crear un archivo llamado arai.json que esté ubicado en la raíz del proyecto con el siguiente contenido:

{
  "name": "institucion/proyecto",
  "description": "UNI-Proyecto, aplicación",
  "scripts": {
    "hooks": "UNI\\Proyecto\\AraiRegistryHooks"
  },
  "provide": [
    {
      "name": "app:institucion/proyecto",
      "alias": "Nombre proyecto",
      "description": "descripción proyecto",
      "version": "0.1.0",
      "icon": "./www/img/logo_iso.png"
    }
  ],
  "consume": [
    {
      "name": "service:siu/sso-saml-idp",
      "version": ">=0.1.0"
    },
    {
      "name": "api:siu/arai-usuarios",
      "version": ">=0.1.0",
      "options": {
        "toba-rest": [
          { "proyecto": "toba_usuarios", "rest-id": "rest_arai_usuarios" }
        ]
      }
    }
  ]
}

Es muy relevante establecer el atributo name y description con los valores deseados. Para el atributo hooks, se debe completar con la ruta o namespace del proyecto hasta la clase php. Esta se crea en el siguiente paso.

Hook de auto-configuración

El hook de configuración es una clase php que implementa la interfaz HooksInterface. Este archivo tiene una nomenclatura estándar, siempre se denomina AraiRegistryHooks y para proyectos SIU-Toba, extienden de RegistryHooksProyectoToba. Se deberá crear dicha clase dentro del directorio /src del proyecto, o en algún punto que esté configurado con el autoloader de composer. Suponiendo en este ejemplo, el archivo sería /src/UNI/Proyecto/AraiRegistryHooks.php:

<?php
namespace UNI\Proyecto;

use SIUToba\Framework\Arai\RegistryHooksProyectoToba;

class AraiRegistryHooks extends RegistryHooksProyectoToba
{

}
Recordar que la clase tiene que poder ser cargada por el autoloader de Composer. Ver ejemplo.

Registrar en Arai-Registry la aplicación

Una vez hechos todos los pasos previos, y cumpliendo con los requisitos de configuración sobre una instalación existente, el flujo normal para registrar una aplicación en Registry consiste en generarse una clave de sincronización, para luego agregar y sincronizar las configuraciones. Ante futuros cambios, ya simplemente es necesario ejecutar la sincronización únicamente.

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:
./bin/arai-cli arai:generar-key --destino=/ruta/donde/guardar/arai-sync.key
También será necesario configurar en el archivo 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
Estos pasos pueden ser opcionales implementando el instalador de proyectos SIU.

Registrar el proyecto

Si todo está en orden, por única vez, el proceso de registración a la plataforma SIU-Arai de la aplicación se concreta haciendo uso de la librería previamente con el siguiente comando:

./bin/arai-cli registry:add  \
    --maintainer nombre-encargado-admin \
    --maintainer-email email-encargado-admin@uni.edu.ar \
    http://url-arai-registry/arai-registry

Se debe proporcionar la url válida del servicio Arai-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 api REST), este comando informará a Arai-Registry la buena nueva.

./bin/arai-cli registry:sync

Este paso es necesario realizarlo también en Arai-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.