SPConfig
Versión 4 (Emilio Penna, Lunes, 11 de Mayo de 2020 15:47:20 -0300)
1 | 1 | h1. SPConfig |
|
---|---|---|---|
2 | 1 | ||
3 | 1 | ||
4 | 1 | ||
5 | 2 | Emilio Penna | h3. 1. Generar claves |
6 | 1 | ||
7 | 4 | Emilio Penna | Se deben generar claves para firma y cifrado. |
8 | 1 | ||
9 | 4 | Emilio Penna | <pre> |
10 | 4 | Emilio Penna | shib-keygen -n sp-signing -f -u _shibd -h <mihost-ejemplo.edu.uy> -y 20 -e https://<mihost-ejemplo.edu.uy>/shibboleth -o /etc/shibboleth/ |
11 | 1 | ||
12 | 4 | Emilio Penna | shib-keygen -n sp-encrypt -f -u _shibd -h <mihost-ejemplo.edu.uy> -y 20 -e https://<mihost-ejemplo.edu.uy>/shibboleth -o /etc/shibboleth/ |
13 | 4 | Emilio Penna | </pre> |
14 | 4 | Emilio Penna | |
15 | 4 | Emilio Penna | Nota para version anterior de shibboleth SP: en la version anterior se usaba una sola clave para las dos cosas. |
16 | 1 | Ref: https://tuakiri.ac.nz/confluence/display/Tuakiri/Install+Shibboleth+SP+on+Debian+Based+linux |
|
17 | 1 | ||
18 | 1 | ||
19 | 2 | Emilio Penna | h3. 2. Configuracion de entityID |
20 | 1 | ||
21 | 1 | en shibboleth2.xml |
|
22 | 1 | ||
23 | 1 | Setear identificador de la entidad: entityID. Ejemplo: |
|
24 | 1 | ||
25 | 1 | <pre><code class="xml"> |
|
26 | 1 | <ApplicationDefaults entityID="https://<mihost-ejemplo.edu.uy>/shibboleth" |
|
27 | 1 | REMOTE_USER="eppn persistent-id targeted-id"> |
|
28 | 1 | </code></pre> |
|
29 | 1 | ||
30 | 1 | Ajustes en elemento Sessions: |
|
31 | 1 | ||
32 | 1 | Poner handlerSSL="true", y agregar propiedades seguras para cookies en cookieProps. Ejemplo: |
|
33 | 1 | ||
34 | 1 | <pre><code class="xml"> |
|
35 | 1 | <Sessions lifetime="28800" timeout="3600" relayState="ss:mem" |
|
36 | 1 | checkAddress="false" handlerSSL="true" cookieProps="; path=/; secure; HttpOnly"> |
|
37 | 1 | </code></pre> |
|
38 | 1 | ||
39 | 1 | *CAMBIAR:* cookieProps="https" hace el mismo efecto |
|
40 | 1 | ||
41 | 1 | Luego se debe reiniciar el proceso de Shibboleth (shibd stop/ shibd start). |
|
42 | 1 | ||
43 | 1 | Para verificar la configuración se puede ejecutar el siguiente comando: |
|
44 | 1 | ||
45 | 1 | <pre> |
|
46 | 1 | shibd -t. |
|
47 | 1 | </pre> |
|
48 | 1 | ||
49 | 1 | La salida esperada es la siguiente: |
|
50 | 1 | ||
51 | 1 | <pre> |
|
52 | 1 | overall configuration is loadable, check console for non-fatal problems |
|
53 | 1 | </pre> |
|
54 | 1 | ||
55 | 1 | ||
56 | 2 | Emilio Penna | h3. 3. Prueba con TestShib |
57 | 1 | ||
58 | 1 | Si desea verificar la configuración del SP se puede probar con el Proveedor de Identidad público de prueba provisto por TestShib: |
|
59 | 1 | ||
60 | 1 | https://www.testshib.org/configure.html |
|
61 | 1 | ||
62 | 1 | Una vez realizada esta prueba puede continuar con la configuración con el Provedor de Identidad de la Universidad. |
|
63 | 1 | ||
64 | 3 | Emilio Penna | h3. 4. Definir y cargar una fuente de metadata |
65 | 1 | ||
66 | 1 | Obtener metadata del IdP, se adjunta al final la metadata del IdP de test de seciu. |
|
67 | 1 | ||
68 | 1 | Guardarla en el directorio metadata de su SP (si no existe crearlo). |
|
69 | 1 | ||
70 | 1 | /etc/shibboleth/metadata/metadata-idp-test-udelar.xml |
|
71 | 1 | ||
72 | 1 | Registrarla en el SP, para esto, en el archivo shibboleth2.xml, ajustar el path en el elemento <MetadataProvider>: |
|
73 | 1 | ||
74 | 1 | <pre> <code class="xml"> |
|
75 | 1 | <MetadataProvider type="XML" path="/etc/shibboleth/metadata/metadata-idp-test-udelar.xml" ></MetadataProvider> |
|
76 | 1 | </code> </pre> |
|
77 | 1 | ||
78 | 1 | ||
79 | 3 | Emilio Penna | h3. 5. Configurar Inicio de Sesión |
80 | 1 | ||
81 | 1 | Se debe configurar elemento SSO dentro del archivo shibboleth2.xml para que use el provedor de identidad de test de Seciu: |
|
82 | 1 | ||
83 | 1 | <pre> <code class="xml"> |
|
84 | 1 | <SSO entityID="https://pirapire.seciu.edu.uy/idp/shibboleth" |
|
85 | 1 | </code></pre> |
|
86 | 1 | ||
87 | 3 | Emilio Penna | h3. 6. Configuración del archivo attribute-map.xml |
88 | 1 | ||
89 | 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. |
|
90 | 1 | ||
91 | 1 | Se puede utilizar el que viene por defecto, luego se van descomentando o agregando los atributos que se utilicen. |
|
92 | 1 | Al final se adjunta un ejemplo de archivo attribute-map.xml |
|
93 | 1 | ||
94 | 1 | ||
95 | 3 | Emilio Penna | h3. 7. Enviar Metadata de su SP para registro |
96 | 1 | ||
97 | 1 | Debe obtener la metadata de su SP y contactarse con Seciu para su registro. |
|
98 | 1 | ||
99 | 1 | La información sobre como obtener y ajustar la metadata puede verla en esta pagina: [[SP-Metadata]] |
|
100 | 1 | ||
101 | 1 | ||
102 | 3 | Emilio Penna | h3. 8. Configuracion de Apache para proteger un recurso |
103 | 1 | ||
104 | 1 | En Apache, se recomienda setear correctamente el ServerName y también setear "UseCanonicalName On". |
|
105 | 1 | También se recomienda fuertemente utilizar el "worker" MPM. |
|
106 | 1 | ||
107 | 1 | Referencia: https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPApacheConfig |
|
108 | 1 | ||
109 | 1 | Al instalar el modulo, se agrega mods-available/shib2.load, donde se carga el módulo. |
|
110 | 1 | ||
111 | 1 | *---- shib.conf ESTO NO ES NECESARIO AGREGARLO, YA SE AGREGA AL INSTALAR EL MODULO (20190425)* |
|
112 | 1 | El archivo conf-enabled/shib.conf deberia tener estas directivas: |
|
113 | 1 | ||
114 | 1 | <pre> <code class="xml"> |
|
115 | 1 | ||
116 | 1 | # Ensures handler will be accessible. |
|
117 | 1 | # |
|
118 | 1 | <Location /Shibboleth.sso> |
|
119 | 1 | Satisfy Any |
|
120 | 1 | Allow from all |
|
121 | 1 | </Location> |
|
122 | 1 | ||
123 | 1 | # |
|
124 | 1 | # Used for example style sheet in error templates. |
|
125 | 1 | # |
|
126 | 1 | <IfModule mod_alias.c> |
|
127 | 1 | <Location /shibboleth-sp> |
|
128 | 1 | Satisfy Any |
|
129 | 1 | Allow from all |
|
130 | 1 | </Location> |
|
131 | 1 | Alias /shibboleth-sp/main.css /usr/share/shibboleth/main.css |
|
132 | 1 | </IfModule> |
|
133 | 1 | ||
134 | 1 | </code> </pre> |
|
135 | 1 | ||
136 | 1 | *----FIN shib.conf* |
|
137 | 1 | ||
138 | 1 | ||
139 | 1 | Para agregar un recurso (Location) protegido, agregar en shib.conf o en el virtual host: |
|
140 | 1 | ||
141 | 1 | <pre> <code class="xml"> |
|
142 | 1 | ||
143 | 1 | # You MUST enable AuthType shibboleth for the module to process |
|
144 | 1 | # any requests, and there MUST be a require command as well. |
|
145 | 1 | ||
146 | 1 | <Location /secure> |
|
147 | 1 | AuthType shibboleth |
|
148 | 1 | ShibRequestSetting requireSession 1 |
|
149 | 1 | require shib-session |
|
150 | 1 | </Location> |
|
151 | 1 | </code> </pre> |
|
152 | 1 | ||
153 | 1 | ||
154 | 1 | Ejemplos de reglas para control de acceso: |
|
155 | 1 | https://www.switch.ch/aai/guides/sp/access-rules/ |
|
156 | 1 | ||
157 | 1 | Por último se debe habilitar la configuración con el siguiente comando: |
|
158 | 1 | ||
159 | 1 | <pre> |
|
160 | 1 | a2enconf shib |
|
161 | 1 | </pre> |