Diferencia entre revisiones de «SIU-Arai/Integracion/Apache»
(documentación inicial) |
(mejoras) |
||
Línea 4: | Línea 4: | ||
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''). | 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''). | ||
− | |||
− | |||
== Requerimientos == | == Requerimientos == | ||
Será necesario contar con: | Será necesario contar con: | ||
Línea 36: | Línea 34: | ||
== Ajustes en Apache == | == Ajustes en Apache == | ||
− | === Instalar módulo | + | === Instalar módulo Mellon === |
− | 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 | + | 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 | sudo apt install libapache2-mod-auth-mellon | ||
Línea 44: | Línea 42: | ||
Luego de realizar la instalación, deberemos activar el módulo y recargar la configuración de Apache para que tome los cambios. | Luego de realizar la instalación, deberemos activar el módulo y recargar la configuración de Apache para que tome los cambios. | ||
+ | === Configurar autenticación SAML === | ||
+ | Se debe crear un VirtualHost que nos permita configurar el sitio web adecuadamente y proteger el acceso. Para ello, en este ejemplo creamos el archivo <code>/etc/apache2/sites-available/web.conf</code> con el siguiente contenido: | ||
+ | |||
+ | <source lang="ruby" enclose="div"> <VirtualHost *:80> | ||
+ | ServerName https://web.unx.edu.ar | ||
+ | |||
+ | # punto de acceso protegido por autenticación | ||
+ | <Location /> | ||
+ | Require valid-user | ||
+ | AuthType "Mellon" | ||
+ | MellonEnable "auth" | ||
+ | MellonVariable "analitica" | ||
+ | MellonSecureCookie On | ||
+ | MellonUser "uniqueIdentifier" | ||
+ | MellonSPPrivateKeyFile /etc/apache2/mellon/web.unx.edu.ar_mellon_metadata.key | ||
+ | MellonSPCertFile /etc/apache2/mellon/web.unx.edu.ar_mellon_metadata.cert | ||
+ | MellonIdPMetadataFile /etc/apache2/mellon/idp-metadata.xml | ||
+ | MellonDoNotVerifyLogoutSignature https://idp.unx.edu.ar/saml2/idp/metadata.php | ||
+ | </Location> | ||
+ | |||
+ | .... | ||
− | + | # punto de acceso sin autenticacion | |
− | + | <Location /sin-autenticacion> | |
− | + | Satisfy Any | |
− | + | Allow from all | |
− | + | AuthType None | |
− | + | Require all granted | |
− | + | </Location> | |
− | + | </VirtualHost> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</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> | </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> | ||
Línea 70: | Línea 80: | ||
== Limitaciones conocidas == | == 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 | # 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 | ||
+ | # No se puede validar la signatura del response al '''logout'''. Por ello se desactiva la validación vía <code>MellonDoNotVerifyLogoutSignature</code>. |
Revisión del 09:08 26 jun 2018
Sumario
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
- 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: 'https://web.unx.edu.ar'
- 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/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.'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 Mellon
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.
Configurar autenticación SAML
Se debe crear un VirtualHost que nos permita configurar el sitio web adecuadamente y proteger el acceso. Para ello, en este ejemplo creamos el archivo /etc/apache2/sites-available/web.conf
con el siguiente contenido:
ServerName https://web.unx.edu.ar
# punto de acceso protegido por autenticación
<Location />
Require valid-user
AuthType "Mellon"
MellonEnable "auth"
MellonVariable "analitica"
MellonSecureCookie On
MellonUser "uniqueIdentifier"
MellonSPPrivateKeyFile /etc/apache2/mellon/web.unx.edu.ar_mellon_metadata.key
MellonSPCertFile /etc/apache2/mellon/web.unx.edu.ar_mellon_metadata.cert
MellonIdPMetadataFile /etc/apache2/mellon/idp-metadata.xml
MellonDoNotVerifyLogoutSignature https://idp.unx.edu.ar/saml2/idp/metadata.php
</Location>
....
# punto de acceso sin autenticacion
<Location /sin-autenticacion>
Satisfy Any
Allow from all
AuthType None
Require all granted
</Location>
</VirtualHost>
Nota:idp_cert
contiene 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
- 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
- No se puede validar la signatura del response al logout. Por ello se desactiva la validación vía
MellonDoNotVerifyLogoutSignature
.