SPInstall

Versión 30 (Emilio Penna, Miércoles, 7 de Febrero de 2018 15:39:27 -0300)

1 1
h1. Instalación Shibboleth SP
2 1
3 24 Emilio Penna
Actualizado: 2018-02-06
4 1
5 25 Emilio Penna
*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.
6 3 Emilio Penna
7 24 Emilio Penna
*Otros sistemas:*  En caso de utilizar CentOS, es similar, ver https://spaces.internet2.edu/pages/viewpage.action?pageId=30245422
8 29 Emilio Penna
*REVISAR LINK*
9 1
10 4 Emilio Penna
Referencias:
11 4 Emilio Penna
12 4 Emilio Penna
https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPLinuxInstall
13 4 Emilio Penna
https://www.switch.ch/aai/guides/sp/
14 4 Emilio Penna
https://www.switch.ch/aai/guides/sp/installation/
15 4 Emilio Penna
16 1
17 1
18 20 Emilio Penna
19 24 Emilio Penna
h3. 1. Agregar repositorio e instalar Shibboleth SP
20 1
21 15 Emilio Penna
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.
22 1
23 1
<pre>
24 1
apt-get install curl
25 1
curl -k -O http://pkg.switch.ch/switchaai/SWITCHaai-swdistrib.asc
26 20 Emilio Penna
gpg --with-fingerprint  SWITCHaai-swdistrib.asc
27 20 Emilio Penna
# verificar que el fingerprint de la clave del repositorio sea 294E 37D1 5415 6E00 FB96 D7AA 26C3 C469 15B7 6742
28 1
apt-key add SWITCHaai-swdistrib.asc
29 20 Emilio Penna
echo 'deb http://pkg.switch.ch/switchaai/debian jessie main' | tee /etc/apt/sources.list.d/SWITCHaai-swdistrib.list > /dev/null
30 20 Emilio Penna
apt-get update
31 21 Emilio Penna
apt-get install --install-recommends shibboleth
32 1
</pre>
33 1
34 1
35 1
h3. 2. Habilitar un Virtual Host con HTTPS
36 1
37 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:
38 1
39 1
<pre>
40 1
a2enmod ssl 
41 23 Emilio Penna
cd /etc/apache2/sites-available
42 23 Emilio Penna
cp default-ssl.conf shibsp1.conf
43 23 Emilio Penna
a2ensite shibsp1.conf
44 1
service apache2 reload
45 23 Emilio Penna
</pre>
46 1
47 24 Emilio Penna
Sugerencia: verificar que cargue una pagina con HTTPS en un navegador.
48 1
49 24 Emilio Penna
También se puede ejecutar:
50 24 Emilio Penna
<pre>
51 24 Emilio Penna
apache2ctl configtest
52 24 Emilio Penna
</pre>
53 24 Emilio Penna
La salida deberia ser: Syntax OK
54 24 Emilio Penna
55 24 Emilio Penna
56 1
h3. 3. Verificación de estado
57 1
58 15 Emilio Penna
El SP tiene una página de estado.
59 1
60 24 Emilio Penna
Para verificar el estado se puede ejecutar:
61 1
62 1
<pre>
63 1
curl -k https://127.0.0.1/Shibboleth.sso/Status
64 1
</pre>
65 1
66 1
67 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:
68 1
69 1
<pre>
70 1
<code class="xml">
71 1
<Handler type="Status" Location="/Status" acl="127.0.0.1 ::1 164.73.129.60"/>
72 1
</code>
73 1
</pre>
74 1
75 1
76 1
Ante cualquier cambio en la configuración de Shibboleth se debe reiniciar el proceso con los siguientes comando:
77 1
78 1
<pre>
79 1
service shibd stop
80 1
service shibd start
81 1
</pre>
82 1
83 25 Emilio Penna
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.
84 24 Emilio Penna
También puede ser con wget en localhost:  wget https://localhost:443//Shibboleth.sso/Status --no-check-certificate 
85 24 Emilio Penna
86 24 Emilio Penna
87 1
Otros chequeos:
88 1
89 25 Emilio Penna
Acceder a 
90 25 Emilio Penna
https://<mihost-ejemplo.edu.uy>/Shibboleth.sso/Session
91 1
92 25 Emilio Penna
Deberia verse una pagina que dice "A valid session was not found"
93 1
94 25 Emilio Penna
Este mensaje indica que el módulo Shibboleth ha sido cargado correctamente por el webserver.
95 25 Emilio Penna
96 25 Emilio Penna
97 25 Emilio Penna
98 25 Emilio Penna
h3. 4. Generar claves
99 25 Emilio Penna
100 14 Emilio Penna
<pre>
101 25 Emilio Penna
shib-keygen -f -u _shibd -h <mihost-ejemplo.edu.uy> -y 3 -e https://<mihost-ejemplo.edu.uy>/shibboleth -o /etc/shibboleth/
102 1
</pre>
103 1
104 1
h3. 5. Configuracion de entityID
105 1
106 1
en shibboleth2.xml
107 1
108 1
Setear identificador de la entidad: entityID. Ejemplo:
109 1
110 1
<pre><code class="xml">
111 25 Emilio Penna
    <ApplicationDefaults entityID="https://<mihost-ejemplo.edu.uy>/shibboleth"
112 1
                       REMOTE_USER="eppn persistent-id targeted-id">
113 1
</code></pre>
114 1
115 1
Ajustes en elemento Sessions:
116 1
117 1
Poner handlerSSL="true", y agregar propiedades seguras para cookies en cookieProps. Ejemplo:
118 1
119 1
<pre><code class="xml">
120 1
      <Sessions lifetime="28800" timeout="3600" relayState="ss:mem"
121 1
             checkAddress="false" handlerSSL="true" cookieProps="; path=/; secure; HttpOnly">
122 1
</code></pre>
123 1
124 30 Emilio Penna
*CAMBIAR:* cookieProps="https" hace el mismo efecto
125 30 Emilio Penna
126 27 Emilio Penna
Luego se debe reiniciar el proceso de Shibboleth (shibd stop/ shibd start).
127 1
128 1
Para verificar la configuración se puede ejecutar el siguiente comando: 
129 1
130 1
<pre>
131 1
shibd -t.
132 1
</pre>
133 1
134 1
La salida esperada es la siguiente:
135 1
136 1
<pre>
137 1
overall configuration is loadable, check console for non-fatal problems
138 1
</pre>
139 1
140 1
141 8 Pablo Silva
h3. 6. Prueba con TestShib
142 7 Pablo Silva
143 15 Emilio Penna
Si desea verificar la configuración del SP se puede probar con el Proveedor de Identidad público de prueba provisto por TestShib:
144 7 Pablo Silva
145 8 Pablo Silva
https://www.testshib.org/configure.html
146 1
147 9 Pablo Silva
Una vez realizada esta prueba puede continuar con la configuración con el Provedor de Identidad de la Universidad.
148 7 Pablo Silva
149 10 Pablo Silva
h3. 7. Definir y cargar una fuente de metadata
150 1
151 18 Emilio Penna
Obtener metadata del IdP, se adjunta al final la metadata del IdP de test de seciu.
152 1
153 18 Emilio Penna
Guardarla en el directorio metadata de su SP (si no existe crearlo).
154 1
155 18 Emilio Penna
/etc/shibboleth/metadata/metadata-idp-test-udelar.xml
156 1
157 19 Emilio Penna
Registrarla en el SP, para esto, en el archivo shibboleth2.xml, ajustar el path en el elemento <MetadataProvider>:
158 1
159 1
<pre> <code class="xml">
160 18 Emilio Penna
<MetadataProvider type="XML" path="/etc/shibboleth/metadata/metadata-idp-test-udelar.xml" ></MetadataProvider>
161 1
</code> </pre>
162 1
163 1
164 10 Pablo Silva
h3. 8. Configurar Inicio de Sesión
165 1
166 26 Emilio Penna
Se debe configurar elemento SSO dentro del archivo shibboleth2.xml para que use el provedor de identidad de test de Seciu: 
167 1
168 1
<pre> <code class="xml">
169 14 Emilio Penna
<SSO entityID="https://pirapire.seciu.edu.uy/idp/shibboleth"
170 1
</code></pre>
171 1
172 10 Pablo Silva
h3. 9. Configuración del archivo attribute-map.xml
173 1
174 1
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.
175 1
176 1
Se puede utilizar el que viene por defecto, luego se van descomentando o agregando los atributos que se utilicen.
177 1
Al final se adjunta un ejemplo de archivo attribute-map.xml
178 1
179 1
180 10 Pablo Silva
h3. 10. Enviar Metadata de su SP para registro
181 1
182 17 Emilio Penna
Debe obtener la metadata de su SP y contactarse con Seciu para su registro. 
183 1
184 17 Emilio Penna
La información sobre como obtener y ajustar la metadata puede verla en esta pagina: [[SP-Metadata]]
185 1
186 1
187 11 Pablo Silva
h3. 11. Configuracion de Apache para proteger un recurso
188 1
189 1
En Apache, se recomienda setear correctamente el ServerName y también setear "UseCanonicalName On".
190 15 Emilio Penna
También se recomienda fuertemente utilizar el "worker" MPM.
191 1
192 1
Referencia: https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPApacheConfig
193 1
194 15 Emilio Penna
Al instalar el modulo, se agrega mods-available/shib2.load, donde se carga el módulo.
195 1
196 28 Emilio Penna
*---- ESTO NO ES NECESARIO, REVSIAR*
197 1
Luego se debe crear el archivo conf-enabled/shib.conf con las directivas apropiadas:
198 1
199 1
<pre> <code class="xml">
200 1
201 1
# Ensures handler will be accessible.
202 1
#
203 1
<Location /Shibboleth.sso>
204 1
  Satisfy Any
205 1
  Allow from all
206 1
</Location>
207 1
208 1
#
209 1
# Used for example style sheet in error templates.
210 1
#
211 1
<IfModule mod_alias.c>
212 1
  <Location /shibboleth-sp>
213 1
    Satisfy Any
214 1
    Allow from all
215 1
  </Location>
216 1
  Alias /shibboleth-sp/main.css /usr/share/shibboleth/main.css
217 1
</IfModule>
218 1
219 1
</code> </pre> 
220 28 Emilio Penna
221 28 Emilio Penna
*----FIN NO ES NECEESARIO*
222 28 Emilio Penna
223 1
224 1
Para agregar un recurso (Location) protegido, agregar en shib.conf o en el virtual host:
225 1
226 1
<pre> <code class="xml">
227 1
228 1
# You MUST enable AuthType shibboleth for the module to process
229 1
# any requests, and there MUST be a require command as well.
230 1
231 1
<Location /secure>
232 1
  AuthType shibboleth
233 1
  ShibRequestSetting requireSession 1
234 1
  require shib-session
235 1
</Location>
236 1
</code> </pre>
237 1
238 1
239 1
Ejemplos de reglas para control de acceso:
240 1
https://www.switch.ch/aai/guides/sp/access-rules/
241 1
242 15 Emilio Penna
Por último se debe habilitar la configuración con el siguiente comando:
243 1
244 1
<pre>
245 1
a2enconf shib
246 1
</pre>