SPInstall

Versión 13 (Emilio Penna, Viernes, 3 de Junio de 2016 18:38:56 -0300) → Versión 14/41 (Emilio Penna, Lunes, 27 de Marzo de 2017 16:19:32 -0300)


h1. Instalación Shibboleth SP

*Escenario:* En esta guia se describe la instalación de Shibboleth SP en un equipo con Debian8 y Apache 2.4. En los pasos siguientes se considera que la La instalación se realiza realizó en en el host mihost.midominio.edu.uy, sp1.seciu.edu.uy, se debe ajustar el nombre al que corresponda.

*Otros sistemas:* En caso de utilizar debian7, es casi igual. En caso de utilizar CentOS, es similar, ver https://spaces.internet2.edu/pages/viewpage.action?pageId=30245422

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

La version de Shibboleth SP disponible en los repositorios de debian puede ser un poco obsoleta. El repositorio de SWITCH tiene una version mas actualizada.

<pre>
apt-get install curl
curl -k -O http://pkg.switch.ch/switchaai/SWITCHaai-swdistrib.asc
apt-key add SWITCHaai-swdistrib.asc
apt-get install 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
cp default-ssl shibsp1
a2ensite shibsp1
</pre>

h3. 3. Verificacion de estado

El SP tiene una pagina de estado

Para verificar el estado se puede correr el siguiente comando:

<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.midominio.edu.uy/Shibboleth.sso/Status https://sp1.seciu.edu.uy/Shibboleth.sso/Status se puede ver una página xml con información del SP.

h3. 4. Genero claves

<pre>
shib-keygen -f -u _shibd -h mihost.midominio.edu.uy sp1.seciu.edu.uy -y 3 -e https://mihost.midominio.edu.uy/shibboleth https://sp1.seciu.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.midominio.edu.uy/shibboleth" entityID="https://sp1.seciu.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>

Luego se debe reiniciar el proceso de Shibboleth.

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 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, la del ambiente de testing de seciu es:

https://pirapire.seciu.edu.uy/idp/shibboleth

Guardarla en el directorio metadata, si no existe crearlo.

/etc/shibboleth/metadata/metadata-idp1.xml

Registrarla en el SP, para esto referenciar en shibboleth2.xml

<pre> <code class="xml">
<MetadataProvider type="XML" path="/etc/shibboleth/metadata/metadata.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:

<pre> <code class="xml">
<SSO entityID="https://pirapire.seciu.edu.uy/idp/shibboleth" entityID="https://cas2.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 su metadata y contactarse con Seciu para su registro.

La metadata del SP se puede obtener de: https://<hostname>/Shibboleth.sso/Metadata

h3. 11. Configuracion de Apache para proteger un recurso

En Apache, se recomienda setear correctamente el ServerName y también setear "UseCanonicalName On".
Tambien 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 modulo.

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>

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 ultimo se debe habilitar la configuracion con el siguiente comando:

<pre>
a2enconf shib
</pre>