SPInstall
Versión 10 (Pablo Silva, Lunes, 14 de Marzo de 2016 17:21:20 -0300) → Versión 11/41 (Pablo Silva, Lunes, 14 de Marzo de 2016 17:21:35 -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. La instalación se realizó en el host 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://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 sp1.seciu.edu.uy -y 3 -e 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://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, ej:
https://login.udelar.edu.uy/idp/shibboleth
Se adjunta al final la metadata del IdP de Udelar.
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://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://sp1.seciu.edu.uy/Shibboleth.sso/Metadata
h3. 11. 10. 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>