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> |