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