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