Instalación ShibbolethSP

Versión 8 (Pablo Silva, Miércoles, 23 de Diciembre de 2015 16:42:26 -0300)

1 1
h1. Instalación ShibbolethSP
2 1
3 1
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.
4 1
5 1
6 1
h3. 1. Agregar repositorio
7 1
8 1
La version de Shibboleth SP disponible en los repositorios de debian es bastante obsoleta. El repositorio de SWITCH tiene una version mas actualizada.
9 1
10 1
<pre>
11 1
apt-get install curl
12 1
curl -k -O http://pkg.switch.ch/switchaai/SWITCHaai-swdistrib.asc
13 1
apt-key add SWITCHaai-swdistrib.asc
14 1
apt-get install shibboleth
15 1
</pre>
16 1
17 1
18 1
h3. 2. Habilitar un Virtual Host con HTTPS
19 1
20 1
En forma obligatoria un SP debe ejecutar con HTTPS. Si no se tiene hablitado se puede crear un Virtual Host de la siguiente manera:
21 1
22 1
<pre>
23 1
a2enmod ssl 
24 1
cp default-ssl shibsp1
25 1
a2ensite shibsp1
26 1
</pre>
27 1
28 1
29 1
h3. 3. Verificacion de estado
30 1
31 1
El SP tiene una pagina de estado
32 1
33 1
Para verificar el estado se puede correr el siguiente comando:
34 1
35 1
<pre>
36 2 Pablo Silva
curl -k https://127.0.0.1/Shibboleth.sso/Status
37 2 Pablo Silva
</pre>
38 1
39 2 Pablo Silva
40 1
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:
41 1
42 1
<pre>
43 1
<code class="xml">
44 1
<Handler type="Status" Location="/Status" acl="127.0.0.1 ::1 164.73.129.60"/>
45 1
</code>
46 1
</pre>
47 1
48 2 Pablo Silva
49 2 Pablo Silva
Ante cualquier cambio en la configuración de Shibboleth se debe reiniciar el proceso con los siguientes comando:
50 2 Pablo Silva
51 2 Pablo Silva
<pre>
52 2 Pablo Silva
service shibd stop
53 2 Pablo Silva
service shibd start
54 2 Pablo Silva
</pre>
55 2 Pablo Silva
56 2 Pablo Silva
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.
57 2 Pablo Silva
58 2 Pablo Silva
59 2 Pablo Silva
h3. 4. Genero claves
60 2 Pablo Silva
61 2 Pablo Silva
<pre>
62 2 Pablo Silva
shib-keygen -f -u _shibd -h sp1.seciu.edu.uy -y 3 -e https://sp1.seciu.edu.uy/shibboleth -o /etc/shibboleth/
63 2 Pablo Silva
</pre>
64 2 Pablo Silva
65 2 Pablo Silva
h3. 5. Configuracion de entityID
66 2 Pablo Silva
67 2 Pablo Silva
en shibboleth2.xml
68 2 Pablo Silva
69 2 Pablo Silva
Setear identificador de la entidad: entityID. Ejemplo:
70 2 Pablo Silva
71 5 Pablo Silva
<pre><code class="xml">
72 1
    <ApplicationDefaults entityID="https://sp1.seciu.edu.uy/shibboleth"
73 3 Pablo Silva
                       REMOTE_USER="eppn persistent-id targeted-id">
74 5 Pablo Silva
</code></pre>
75 2 Pablo Silva
76 1
Ajustes en elemento Sessions:
77 2 Pablo Silva
78 1
Poner handlerSSL="true", y agregar propiedades seguras para cookies en cookieProps. Ejemplo:
79 1
80 5 Pablo Silva
<pre><code class="xml">
81 3 Pablo Silva
      <Sessions lifetime="28800" timeout="3600" relayState="ss:mem"
82 3 Pablo Silva
             checkAddress="false" handlerSSL="true" cookieProps="; path=/; secure; HttpOnly">
83 5 Pablo Silva
</code></pre>
84 2 Pablo Silva
85 2 Pablo Silva
Luego se debe reiniciar el proceso de Shibboleth.
86 2 Pablo Silva
87 2 Pablo Silva
Para verificar la configuración se puede ejecutar el siguiente comando: 
88 2 Pablo Silva
89 2 Pablo Silva
<pre>
90 2 Pablo Silva
shibd -t.
91 2 Pablo Silva
</pre>
92 2 Pablo Silva
93 2 Pablo Silva
La salida esperada es la siguiente:
94 2 Pablo Silva
95 2 Pablo Silva
<pre>
96 2 Pablo Silva
overall configuration is loadable, check console for non-fatal problems
97 2 Pablo Silva
</pre>
98 6 Pablo Silva
99 6 Pablo Silva
100 6 Pablo Silva
h3. 6. Definir y cargar una fuente de metadata
101 6 Pablo Silva
102 6 Pablo Silva
Obtener metadata del IdP, ej:
103 6 Pablo Silva
104 6 Pablo Silva
https://login.udelar.edu.uy/idp/shibboleth
105 6 Pablo Silva
106 6 Pablo Silva
Se adjunta al final la metadata del IdP de Udelar.
107 6 Pablo Silva
108 6 Pablo Silva
Guardarla en el directorio metadata, si no exsite crearlo.
109 6 Pablo Silva
110 6 Pablo Silva
/etc/shibboleth/metadata/metadata-idp1.xml
111 6 Pablo Silva
112 6 Pablo Silva
Registrarla en el SP, para esto referenciar en shibboleth2.xml
113 6 Pablo Silva
114 6 Pablo Silva
<pre> <code class="xml">
115 6 Pablo Silva
<MetadataProvider type="XML" path="/etc/shibboleth/metadata/metadata.xml" ></MetadataProvider>
116 6 Pablo Silva
</code> </pre>
117 7 Pablo Silva
118 7 Pablo Silva
119 7 Pablo Silva
h3. 7. Configurar Inicio de Sesión
120 7 Pablo Silva
121 7 Pablo Silva
Se debe configurar elemento SSO dentro del archivo shibboleth2.xml para que use el provedor de identidad: 
122 7 Pablo Silva
123 7 Pablo Silva
<pre> <code class="xml">
124 7 Pablo Silva
<SSO entityID="https://cas2.seciu.edu.uy/idp/shibboleth"
125 7 Pablo Silva
</code></pre>
126 8 Pablo Silva
127 8 Pablo Silva
h3. 8. Configuración del archivo attribute-map.xml
128 8 Pablo Silva
129 8 Pablo Silva
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.
130 8 Pablo Silva
131 8 Pablo Silva
Se puede utilizar el que viene por defecto, luego se van descomentando o agregando los atributos que se utilicen.
132 8 Pablo Silva
Al final se adjunta un ejemplo de archivo attribute-map.xml
133 8 Pablo Silva
134 8 Pablo Silva
135 8 Pablo Silva
h3. 9. Enviar Metadata de su SP para registro
136 8 Pablo Silva
137 8 Pablo Silva
Debe obtener su metadata y contactarse con Seciu para su registro. 
138 8 Pablo Silva
139 8 Pablo Silva
La metadata del SP se puede obtener de: https://sp1.seciu.edu.uy/Shibboleth.sso/Metadata
140 8 Pablo Silva
141 8 Pablo Silva
142 8 Pablo Silva
h3. 10. Configuracion de Apache para proteger un recurso
143 8 Pablo Silva
144 8 Pablo Silva
En Apache, se recomienda setear correctamente el ServerName y también setear "UseCanonicalName On".
145 8 Pablo Silva
Tambien se recomienda fuertemente utilizar el "worker" MPM.
146 8 Pablo Silva
147 8 Pablo Silva
Referencia: https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPApacheConfig
148 8 Pablo Silva
149 8 Pablo Silva
Al instalar el modulo, se agrega mods-available/shib2.load, donde se carga el modulo.
150 8 Pablo Silva
151 8 Pablo Silva
Luego se debe crear el archivo conf-enabled/shib.conf con las directivas apropiadas:
152 8 Pablo Silva
153 8 Pablo Silva
<pre> <code class="xml">
154 8 Pablo Silva
155 8 Pablo Silva
# Ensures handler will be accessible.
156 8 Pablo Silva
#
157 8 Pablo Silva
<Location /Shibboleth.sso>
158 8 Pablo Silva
  Satisfy Any
159 8 Pablo Silva
  Allow from all
160 8 Pablo Silva
</Location>
161 8 Pablo Silva
162 8 Pablo Silva
#
163 8 Pablo Silva
# Used for example style sheet in error templates.
164 8 Pablo Silva
#
165 8 Pablo Silva
<IfModule mod_alias.c>
166 8 Pablo Silva
  <Location /shibboleth-sp>
167 8 Pablo Silva
    Satisfy Any
168 8 Pablo Silva
    Allow from all
169 8 Pablo Silva
  </Location>
170 8 Pablo Silva
  Alias /shibboleth-sp/main.css /usr/share/shibboleth/main.css
171 8 Pablo Silva
</IfModule>
172 8 Pablo Silva
173 8 Pablo Silva
</code> </pre> 
174 8 Pablo Silva
175 8 Pablo Silva
Para agregar un recurso (Location) protegido, agregar en shib.conf o en el virtual host:
176 8 Pablo Silva
177 8 Pablo Silva
<pre> <code class="xml">
178 8 Pablo Silva
179 8 Pablo Silva
# You MUST enable AuthType shibboleth for the module to process
180 8 Pablo Silva
# any requests, and there MUST be a require command as well.
181 8 Pablo Silva
182 8 Pablo Silva
<Location /secure>
183 8 Pablo Silva
  AuthType shibboleth
184 8 Pablo Silva
  ShibRequestSetting requireSession 1
185 8 Pablo Silva
  require shib-session
186 8 Pablo Silva
</Location>
187 8 Pablo Silva
</code> </pre>
188 8 Pablo Silva
189 8 Pablo Silva
190 8 Pablo Silva
Ejemplos de reglas para control de acceso:
191 8 Pablo Silva
https://www.switch.ch/aai/guides/sp/access-rules/
192 8 Pablo Silva
193 8 Pablo Silva
Por ultimo se debe habilitar la configuracion con el siguiente comando:
194 8 Pablo Silva
195 8 Pablo Silva
<pre>
196 8 Pablo Silva
a2enconf shib
197 8 Pablo Silva
</pre>