SPInstall
Versión 30 (Emilio Penna, Miércoles, 7 de Febrero de 2018 15:39:27 -0300) → Versión 31/41 (Emilio Penna, Viernes, 12 de Abril de 2019 14:30:32 -0300)
h1. Instalación Shibboleth SP
Actualizado: 2018-02-06
*Escenario:* En esta guia se describe la instalación de Shibboleth SP en un equipo con Debian 8 y Apache 2.4. En los pasos siguientes se considera que la instalación se realiza en en el host <mihost-ejemplo.edu.uy>, se debe ajustar el nombre al que corresponda.
*Otros sistemas:* En caso de utilizar CentOS, es similar, ver https://spaces.internet2.edu/pages/viewpage.action?pageId=30245422
*REVISAR LINK*
Referencias:
https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPLinuxInstall
https://www.switch.ch/aai/guides/sp/
https://www.switch.ch/aai/guides/sp/installation/
h3. 1. Agregar repositorio e instalar Shibboleth SP
La versión de Shibboleth SP disponible en los repositorios de debian puede ser un poco obsoleta. El repositorio de SWITCH (red académica de Suiza) tiene una versión mas actualizada.
<pre>
apt-get install curl
curl -k -O http://pkg.switch.ch/switchaai/SWITCHaai-swdistrib.asc
gpg --with-fingerprint SWITCHaai-swdistrib.asc
# verificar que el fingerprint de la clave del repositorio sea 294E 37D1 5415 6E00 FB96 D7AA 26C3 C469 15B7 6742
apt-key add SWITCHaai-swdistrib.asc
echo 'deb http://pkg.switch.ch/switchaai/debian jessie main' | tee /etc/apt/sources.list.d/SWITCHaai-swdistrib.list > /dev/null
apt-get update
apt-get install --install-recommends shibboleth
</pre>
*Notas para debian 9: (20190412)*
De acuerdo al sitio de Switch, se debe habilitar el repositorio debian-backports, para eso se puede agregar en el sources.list:
deb http://deb.debian.org/debian stretch-backports main
luego:
<pre>
sudo apt update
sudo apt install -t stretch-backports init-system-helpers libxerces-c3.2
sudo apt install --install-recommends shibboleth
</pre>
h3. 2. Habilitar un Virtual Host con HTTPS
En forma obligatoria un SP debe ejecutar con HTTPS. Si no se tiene hablitado se puede crear un Virtual Host de la siguiente manera:
<pre>
a2enmod ssl
cd /etc/apache2/sites-available
cp default-ssl.conf shibsp1.conf
a2ensite shibsp1.conf
service apache2 reload
</pre>
Sugerencia: verificar que cargue una pagina con HTTPS en un navegador.
También se puede ejecutar:
<pre>
apache2ctl configtest
</pre>
La salida deberia ser: Syntax OK
h3. 3. Verificación de estado
El SP tiene una página de estado.
Para verificar el estado se puede ejecutar:
<pre>
curl -k https://127.0.0.1/Shibboleth.sso/Status
</pre>
Por defecto solo permite el acceso a la pagina de estado desde localhost. Para habilitar el acceso desde otro equipo, se puede agregar la IP desde la que se quiere acceder. Para esto, editar /etc/shibboleth/shibboleth2.xml, y agregar la ip en el elemento Handler. Ejemplo:
<pre>
<code class="xml">
<Handler type="Status" Location="/Status" acl="127.0.0.1 ::1 164.73.129.60"/>
</code>
</pre>
Ante cualquier cambio en la configuración de Shibboleth se debe reiniciar el proceso con los siguientes comando:
<pre>
service shibd stop
service shibd start
</pre>
Luego accediendo a la dirección https://<mihost-ejemplo.edu.uy>/Shibboleth.sso/Status se puede ver una página xml con información del SP.
También puede ser con wget en localhost: wget https://localhost:443//Shibboleth.sso/Status --no-check-certificate
Otros chequeos:
Acceder a
https://<mihost-ejemplo.edu.uy>/Shibboleth.sso/Session
Deberia verse una pagina que dice "A valid session was not found"
Este mensaje indica que el módulo Shibboleth ha sido cargado correctamente por el webserver.
h3. 4. Generar claves
<pre>
shib-keygen -f -u _shibd -h <mihost-ejemplo.edu.uy> -y 3 -e https://<mihost-ejemplo.edu.uy>/shibboleth -o /etc/shibboleth/
</pre>
h3. 5. Configuracion de entityID
en shibboleth2.xml
Setear identificador de la entidad: entityID. Ejemplo:
<pre><code class="xml">
<ApplicationDefaults entityID="https://<mihost-ejemplo.edu.uy>/shibboleth"
REMOTE_USER="eppn persistent-id targeted-id">
</code></pre>
Ajustes en elemento Sessions:
Poner handlerSSL="true", y agregar propiedades seguras para cookies en cookieProps. Ejemplo:
<pre><code class="xml">
<Sessions lifetime="28800" timeout="3600" relayState="ss:mem"
checkAddress="false" handlerSSL="true" cookieProps="; path=/; secure; HttpOnly">
</code></pre>
*CAMBIAR:* cookieProps="https" hace el mismo efecto
Luego se debe reiniciar el proceso de Shibboleth (shibd stop/ shibd start).
Para verificar la configuración se puede ejecutar el siguiente comando:
<pre>
shibd -t.
</pre>
La salida esperada es la siguiente:
<pre>
overall configuration is loadable, check console for non-fatal problems
</pre>
h3. 6. Prueba con TestShib
Si desea verificar la configuración del SP se puede probar con el Proveedor de Identidad público de prueba provisto por TestShib:
https://www.testshib.org/configure.html
Una vez realizada esta prueba puede continuar con la configuración con el Provedor de Identidad de la Universidad.
h3. 7. Definir y cargar una fuente de metadata
Obtener metadata del IdP, se adjunta al final la metadata del IdP de test de seciu.
Guardarla en el directorio metadata de su SP (si no existe crearlo).
/etc/shibboleth/metadata/metadata-idp-test-udelar.xml
Registrarla en el SP, para esto, en el archivo shibboleth2.xml, ajustar el path en el elemento <MetadataProvider>:
<pre> <code class="xml">
<MetadataProvider type="XML" path="/etc/shibboleth/metadata/metadata-idp-test-udelar.xml" ></MetadataProvider>
</code> </pre>
h3. 8. Configurar Inicio de Sesión
Se debe configurar elemento SSO dentro del archivo shibboleth2.xml para que use el provedor de identidad de test de Seciu:
<pre> <code class="xml">
<SSO entityID="https://pirapire.seciu.edu.uy/idp/shibboleth"
</code></pre>
h3. 9. Configuración del archivo attribute-map.xml
Shibboleth SP extrae los atributos del Assertion SAML que le envia el IdP, y almacena los valores en variables del servidor web. El mapeo entre los atributos recibidos y las variables se define en el archivo attribute-map.xml.
Se puede utilizar el que viene por defecto, luego se van descomentando o agregando los atributos que se utilicen.
Al final se adjunta un ejemplo de archivo attribute-map.xml
h3. 10. Enviar Metadata de su SP para registro
Debe obtener la metadata de su SP y contactarse con Seciu para su registro.
La información sobre como obtener y ajustar la metadata puede verla en esta pagina: [[SP-Metadata]]
h3. 11. Configuracion de Apache para proteger un recurso
En Apache, se recomienda setear correctamente el ServerName y también setear "UseCanonicalName On".
También se recomienda fuertemente utilizar el "worker" MPM.
Referencia: https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPApacheConfig
Al instalar el modulo, se agrega mods-available/shib2.load, donde se carga el módulo.
*---- ESTO NO ES NECESARIO, REVSIAR*
Luego se debe crear el archivo conf-enabled/shib.conf con las directivas apropiadas:
<pre> <code class="xml">
# Ensures handler will be accessible.
#
<Location /Shibboleth.sso>
Satisfy Any
Allow from all
</Location>
#
# Used for example style sheet in error templates.
#
<IfModule mod_alias.c>
<Location /shibboleth-sp>
Satisfy Any
Allow from all
</Location>
Alias /shibboleth-sp/main.css /usr/share/shibboleth/main.css
</IfModule>
</code> </pre>
*----FIN NO ES NECEESARIO*
Para agregar un recurso (Location) protegido, agregar en shib.conf o en el virtual host:
<pre> <code class="xml">
# You MUST enable AuthType shibboleth for the module to process
# any requests, and there MUST be a require command as well.
<Location /secure>
AuthType shibboleth
ShibRequestSetting requireSession 1
require shib-session
</Location>
</code> </pre>
Ejemplos de reglas para control de acceso:
https://www.switch.ch/aai/guides/sp/access-rules/
Por último se debe habilitar la configuración con el siguiente comando:
<pre>
a2enconf shib
</pre>