Diferencia entre revisiones de «SIU-Arai/Integracion/Apache»

De SIU
Saltar a: navegación, buscar
m
(documentación inicial)
Línea 3: Línea 3:
 
= Integrando Web Server Apache =
 
= Integrando Web Server Apache =
  
En el caso de aplicaciones web que no tengan un mecanismo de autenticación y/o soporten solo la autenticación htaccess, es posible integrar un módulo en Apache para este recurso esté protegido contra el acceso, vía SAML. Esto módulo permite que Apache se convierta en un proveedor de servicios o  '''SP''' de la plataforma, y soporte el login ''Single Sign On''.
+
En el caso de aplicaciones web que no tengan un mecanismo de autenticación y/o soporten solo la autenticación basic (vía htaccess), es posible integrar un módulo en Apache para que dicho recurso esté protegido contra el acceso, vía SAML. Esto módulo denominado [https://www.keycloak.org/docs/3.2/securing_apps/topics/saml/mod-auth-mellon.html Apache Mellon] permite que Apache se convierta en un proveedor de servicios o  '''SP''' de la plataforma, y soporte el login ''Single Sign On'' (e incluso ''Single Logout'').
  
https://www.keycloak.org/docs/3.2/securing_apps/topics/saml/mod-auth-mellon.html
 
  
[[SIU-Arai/Integracion|< Volver]]
+
== Requerimientos ==
 +
Será necesario contar con:
 +
* la url del servidor Apache, en este ejemplo <code><nowiki>https://web.unx.edu.ar</nowiki></code>
 +
* la url del IdP, en este ejemplo <code><nowiki>https://idp.unx.edu.ar</nowiki></code>
 +
* el identificador disponible para la aplicación, en este ejemplo <code>unx-web_1</code>
 +
* la metadata del IdP, en este ejemplo el XML obtenido de la url <code><nowiki>https://idp.unx.edu.ar/saml2/idp/metadata.php</nowiki></code>
 +
 
 +
== Ajustes en SIU-Araí: Usuarios ==
 +
 
 +
=== Creación de la aplicación Gitlab en Usuarios ===
 +
# Ir a Aplicaciones
 +
# Completar el formulario con los siguientes datos
 +
#* appUniqueId: 'unx-web_1' (recordar es la misma que se pone en idp.yml)
 +
#* url: '<nowiki>https://web.unx.edu.ar'</nowiki>
 +
#* etiqueta: 'Web app apache'
 +
#* versión: 1
 +
#* ícono: (elegir un logo .png, se mostrará en el menú)
 +
# Opcional. Activar la opción filtrar por grupo y luego agregar un grupo existente, como '''devs''' al filtro. Esto hace que sólo la gente que pertenezca a este grupo pueda acceder a la aplicación.
 +
 
 +
=== Definición de Apache como SP ===
 +
Se debe editar el archivo <code>/ruta/arai-usuarios/config/idp.yml</code>. Hay que tener cuidado al editar este archivo porque el formato yaml es estricto. Si se escapa un TAB se rompe.<source lang="yaml" enclose="div"> custom:
 +
    'https://web.unx.edu.ar': # esta clave es la que se pone el 'issuer' de la conf de gitlab
 +
        AssertionConsumerService: 'https://web.unx.edu.ar/users/auth/saml/callback'
 +
        SingleLogoutService: 'https://web.unx.edu.ar/mellon/logout'
 +
        appUniqueId: unx-web_1
 +
 
 +
</source>
 +
 
 +
== Ajustes en Apache ==
 +
 
 +
=== Instalar módulo SAML ===
 +
 
 +
En este caso, se realiza la instalación en un S.O. Debian GNU/Linux versión 9. Para ello se instala el módulo de apache con el comando:
 +
 
 +
sudo apt install libapache2-mod-auth-mellon
 +
 
 +
Luego de realizar la instalación, deberemos activar el módulo y recargar la configuración de Apache para que tome los cambios.
 +
 
 +
 
 +
=== Activar autenticación SAML ===
 +
Se debe editar el archivo <code>/etc/gitlab/gitlab.rb</code>y activar el servicio omniauth para SAML y adecuar la configuración del IDP.<source lang="ruby" enclose="div"> gitlab_rails['omniauth_enabled'] = true
 +
 gitlab_rails['omniauth_allow_single_sign_on'] = ['saml']
 +
 gitlab_rails['omniauth_block_auto_created_users'] = false
 +
 gitlab_rails['omniauth_auto_link_saml_user'] = true 
 +
 gitlab_rails['omniauth_providers'] = [
 +
    {
 +
      "name" => "saml",
 +
       args: {
 +
               assertion_consumer_service_url: 'https://web.unx.edu.ar/users/auth/saml/callback',
 +
               idp_cert: "-----BEGIN CERTIFICATE-----\n ...... \n-----END CERTIFICATE-----",
 +
               idp_sso_target_url: 'https://idp.unx.edu.ar/saml2/idp/SSOService.php',
 +
               issuer: 'https://web.unx.edu.ar',
 +
               name_identifier_format: 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent'
 +
             }
 +
    }
 +
  ]
 +
</source> <blockquote>Nota: <code>idp_cert</code>contiene el certificado público del IdP. Se debe concatenar los saltos de linea y expresarlos textualmente con <code>\n</code>.</blockquote>
 +
 
 +
=== Cargar nueva configuración ===
 +
Dependiendo del S.O. tendremos que reiniciar apache para levantar los cambios:
 +
sudo service apache2 restart
 +
 
 +
== Limitaciones conocidas ==
 +
# Single Logout. Por defecto no tenemos un "link" para ello. Si la aplicación tiene un punto al cual redirigir para el cierre de sesión o si

Revisión del 08:50 26 jun 2018

Siu-arai.png


Integrando Web Server Apache

En el caso de aplicaciones web que no tengan un mecanismo de autenticación y/o soporten solo la autenticación basic (vía htaccess), es posible integrar un módulo en Apache para que dicho recurso esté protegido contra el acceso, vía SAML. Esto módulo denominado Apache Mellon permite que Apache se convierta en un proveedor de servicios o SP de la plataforma, y soporte el login Single Sign On (e incluso Single Logout).


Requerimientos

Será necesario contar con:

  • la url del servidor Apache, en este ejemplo https://web.unx.edu.ar
  • la url del IdP, en este ejemplo https://idp.unx.edu.ar
  • el identificador disponible para la aplicación, en este ejemplo unx-web_1
  • la metadata del IdP, en este ejemplo el XML obtenido de la url https://idp.unx.edu.ar/saml2/idp/metadata.php

Ajustes en SIU-Araí: Usuarios

Creación de la aplicación Gitlab en Usuarios

  1. Ir a Aplicaciones
  2. Completar el formulario con los siguientes datos
    • appUniqueId: 'unx-web_1' (recordar es la misma que se pone en idp.yml)
    • url: 'https://web.unx.edu.ar'
    • etiqueta: 'Web app apache'
    • versión: 1
    • ícono: (elegir un logo .png, se mostrará en el menú)
  3. Opcional. Activar la opción filtrar por grupo y luego agregar un grupo existente, como devs al filtro. Esto hace que sólo la gente que pertenezca a este grupo pueda acceder a la aplicación.

Definición de Apache como SP

Se debe editar el archivo /ruta/arai-usuarios/config/idp.yml. Hay que tener cuidado al editar este archivo porque el formato yaml es estricto. Si se escapa un TAB se rompe.
custom:
    'https://web.unx.edu.ar'
: # esta clave es la que se pone el 'issuer' de la conf de gitlab
        AssertionConsumerService
: 'https://web.unx.edu.ar/users/auth/saml/callback'
        SingleLogoutService
: 'https://web.unx.edu.ar/mellon/logout'
        appUniqueId
: unx-web_1

Ajustes en Apache

Instalar módulo SAML

En este caso, se realiza la instalación en un S.O. Debian GNU/Linux versión 9. Para ello se instala el módulo de apache con el comando:

sudo apt install libapache2-mod-auth-mellon

Luego de realizar la instalación, deberemos activar el módulo y recargar la configuración de Apache para que tome los cambios.


Activar autenticación SAML

Se debe editar el archivo /etc/gitlab/gitlab.rby activar el servicio omniauth para SAML y adecuar la configuración del IDP.
 gitlab_rails['omniauth_enabled'] = true
 gitlab_rails['omniauth_allow_single_sign_on'] = ['saml']
 gitlab_rails['omniauth_block_auto_created_users'] = false
 gitlab_rails['omniauth_auto_link_saml_user'] = true 
 gitlab_rails['omniauth_providers'] = [
    {
      "name" => "saml",
       args: {
               assertion_consumer_service_url: 'https://web.unx.edu.ar/users/auth/saml/callback',
               idp_cert: "-----BEGIN CERTIFICATE-----\n ...... \n-----END CERTIFICATE-----",
               idp_sso_target_url: 'https://idp.unx.edu.ar/saml2/idp/SSOService.php',
               issuer: 'https://web.unx.edu.ar',
               name_identifier_format: 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent'
             }
    }
  ]
 
Nota: idp_certcontiene el certificado público del IdP. Se debe concatenar los saltos de linea y expresarlos textualmente con \n.

Cargar nueva configuración

Dependiendo del S.O. tendremos que reiniciar apache para levantar los cambios:

sudo service apache2 restart

Limitaciones conocidas

  1. Single Logout. Por defecto no tenemos un "link" para ello. Si la aplicación tiene un punto al cual redirigir para el cierre de sesión o si