Instalación Manual
Antes de comenzar a instalar, se debe tener instalado y funcionando una serie de servicios de los cuales depende Arai-Usuarios. A saber:
Una instancia de PostgreSQL versión >= 9.6 corriendo y accesible desde el servidor donde se esté instalando Arai-Usuarios
Una instancia de OpenLDAP corriendo y accesible desde el servidor donde se esté instalando Arai-Usuarios (ver más adelante para ver cuál es el esquema necesario)
Apache versión 2.4 instalado, con módulo
rewrite
activoPHP versión 7.3, con las siguientes extensiones instaladas:
pgsql
,mbstring
,ldap
,gmp
,sodium
.Git instalado
Composer instalado
NodeJS y el paquete Yarn
Sodium a nivel S.O. (ver la guía general)
Ejemplo de instalación en un S.O. base
Vamos a suponer que se realiza la instalación en un entorno Debian Linux versión 10. Para ello, se puede ejecutar el siguiente comando:
sudo apt-get install php7.3 php7.3-pgsql php7.3-gd php7.3-ldap php7.3-gmp php7.3-mbstring php7.3-zip \
php7.3-curl php7.3-opcache git apache2 libapache2-mod-php7.3 openssl
Para instalar NodeJS, podemos seguir alguna guía al respecto.
sudo apt install nodejs npm
Para instalar Yarn, podemos seguir la guía oficial de la comunidad.
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update && sudo apt-get install yarn
Creación del esquema de LDAP
Actualmente dentro del SIU para desarrollo se está utilizando este repositorio para correr y mantener la versión del esquema de LDAP.
Para realizar una instalación propia (recomendado), adaptar el esquema, configurar una instalación existente o utilizar con otro producto, esta guía detallada describe como manipular el esquema LDAP requerido por SIU-Araí: Usuarios.
Verificación de los certificados del IDP
Actualmente, el IDP no soporta el uso de certificados con una cadenas de certificados o validación extendida. Tampoco soporta algoritmos tipo DSA
, sólo RSA
. Por lo general, con certificados autofirmados puede ser suficiente, de acuerdo a la documentación.
En la instalación, se ofrecen certificados ya generados, pero es posible generarlos con comandos del instalador. Si desea generarlos de forma manual, ha de ser de la siguiente forma:
openssl req -newkey rsa:2048 -new -x509 -days 3652 -nodes -out certificado.crt -keyout certificado.key
Esto genera dos archivos: la clave pública certificado.crt
y la clave privada certificado.key
para ser utilizadas en la instalación y configuración del IDP.
Instalación
Para esta guía de instalación los comandos hacen referencia siempre al directorio actual, donde se ha descargado los fuentes de SIU-Araí: Usuarios.
SIU-Araí: Usuarios 3.0 está compuesto de 3 paquetes. Un Proveedor de Identidad (IDP), un Manager de Identidad (IDM) y una Api Rest (API) que brinda acceso a sus datos.
El IDM está hecho en Toba y consume de dos bases de datos, un LDAP y un PostgreSQL.
El IDP está implementado en SimpleSAMLPHP.
La API está implementada utilizando el paquete siu-toba/rest
Descarga de los fuentes
Una vez en el directorio donde se desea descargar el código de Araí-Usuarios, ejecutar:
git clone --branch <VERSION> https://hub.siu.edu.ar/siu-arai/arai-usuarios.git
La versión de este documento es la que se encuentra en el archivo version en la raíz del proyecto.
Descargar las dependencias mediante Composer
Desde dentro del directorio de la aplicación ejecutar:
composer install -d ./api --no-dev --prefer-dist composer install -d ./idm --no-dev --prefer-dist composer install -d ./idp --no-dev --prefer-dist
Configuración de instalación
Hay que definir muchas variables para completar la instalación. No hay que preocuparse si hay algo mal definido ya que todo lo que se define acá puede ser modificado luego a través de archivos de configuración de Araí-Usuarios.
Para mayor comodidad, se entrega con cada paquete un archivo .env.dist de variables de entorno listo para ser completado. En la página Variables de entorno para la instalación se explica en detalle cada una. El instalador dispone de un comando para inicializar el archivo de variables de entorno según el paquete:
api/bin/instalador proyecto:definir-variables idm/bin/instalador proyecto:definir-variables idp/bin/instalador proyecto:definir-variables
Esto creará el archivo en la raíz de cada paquete del proyecto, el cual debe ser editado según las necesidades. Una vez editados los archivos, se puede proceder a realizar la instalación de SIU-Arai: Usuarios.
Generar los certificados del IDP
Opcionalmente, si no se dispone de los certificados del IDP (generados previamente), se puede utilizar un comando disponible para ello:
idp/bin/instalador instalacion:generar-certs-idp
Esto nos generará los certificados para el IDP definidos previamente en las rutas
ARAI_USUARIOS_IDP_KEY_FILE
yARAI_USUARIOS_IDP_CERT_FILE
Instalar el sistema
El proceso de instalar es simple y estándar, basado en el proyecto para instalación de soluciones SIU. En la misma consola, ejecutar:
idm/bin/instalador proyecto:instalar idp/bin/instalador proyecto:instalar api/bin/instalador proyecto:instalar
Existen diversos parámetros y opciones especiales, ver más con
$directorio_paquete/bin/instalador ayuda proyecto:instalar
El instalador, por defecto, no crea la base de datos. Solo genera la estructura SQL necesaria.
Corregir los permisos
Es imprescindible que se configuren los permisos de forma adecuada. Para ello una forma es asignar permisos de usuario de modo que
<mi-usuario>
pueda leer, modificar y ejecutar los archivos del proyecto mientras asignar los permisos de grupo al que corre el servidor web para que este pueda acceder a los archivos. Esto se logra ejecutando como administrador:sudo api/bin/instalador permisos:simple -U <mi-usuario> -W www-data sudo idm/bin/instalador permisos:simple -U <mi-usuario> -W www-data sudo idp/bin/instalador permisos:simple -U <mi-usuario> -W www-data
Existen otras variantes del esquema de permisos y opciones, ver más con
$directorio_paquete/bin/instalador ayuda
Configurar el servidor web Apache
Se proporciona un archivo de configuración muy simple, a modo de guía y con las rutas necesarias. Para probar el IDM, basta con ejecutar:
sudo ln -s `pwd`/idm/instalacion/toba.conf /etc/apache2/sites-enabled/idm.conf
Para probar el IDP, basta con ejecutar:
sudo ln -s `pwd`/idp/config/idp.conf /etc/apache2/sites-enabled/idp.conf
Para probar la API, basta con ejecutar:
sudo ln -s `pwd`/api/config/api.conf /etc/apache2/sites-enabled/api.conf
Esta es una configuración sencilla y por lo tanto requiere de mayor configuración para entornos de producción como sitios virtuales separados, etc.
Por último, se requere tener activo el módulo de reescritura de url del servidor web Apache:
sudo a2enmod rewrite sudo service apache2 restart
Registrar en Araí-Registry
Una vez instalada la aplicación, debería ser funcional 100% (se puede ingresar con el usuario y clave definidas en la configuración de Toba). Sólo falta que el modulo IDM de Arai-Usuarios (que es una aplicación Toba) se integre con el login centralizando, que es proporcionado por el componente interno IDP. Y que este último asi como el módulo API queden disponibles para ser consumidos por otras aplicaciones.
Esto se realiza ejecutando los siguientes pasos:
Registrar el módulo IDP
idp/bin/arai-cli registry:add \ --maintainer-email email@institucion.edu.ar \ --maintainer "nombre responsable" \ ${ARAI_REGISTRY_URL}
Si el resultado es exitoso, se debe ver una salida similar a:
Configuring SP: ...
Actualizando ....
Registrado con instance-name ....
Registrar la aplicación del módulo IDM
idm/bin/arai-cli registry:add \ --maintainer-email email@institucion.edu.ar \ --maintainer "nombre responsable" \ ${ARAI_REGISTRY_URL}
Si el resultado es exitoso, se debe ver una salida similar a:
Configuring SP: ...
Actualizando ....
Registrado con instance-name ....
Registrar el módulo API
api/bin/arai-cli registry:add \ --maintainer-email email@institucion.edu.ar \ --maintainer "nombre responsable" \ ${ARAI_REGISTRY_URL}
Si el resultado es exitoso, se debe ver una salida similar a:
Configuring SP: ...
Actualizando ....
Registrado con instance-name ....
Luego sincronizamos los paquetes para que tanto proveedores como consumidores reciban la información apropiadamente y puedan ajustar su configuración de manera pertinente.
Sincronizar el IDP
idp/bin/arai-cli registry:sync --aceptar-pedidos-acceso
Si el resultado es exitoso, se debe ver una salida similar a:
Configuring SP: ...
Actualizando ....
Se sincronizó correctamente
Sincronizar la aplicación del IDM
idm/bin/arai-cli registry:sync --aceptar-pedidos-acceso
Si el resultado es exitoso, se debe ver una salida similar a:
Configuring SP: ...
Actualizando ....
Se sincronizó correctamente
Sincronizar la API
api/bin/arai-cli registry:sync --aceptar-pedidos-acceso
Si el resultado es exitoso, se debe ver una salida similar a:
Configuring SP: ...
Actualizando ....
Se sincronizó correctamente