SPInstall

Versión 16 (Emilio Penna, Lunes, 27 de Marzo de 2017 16:31:07 -0300)

1 1
h1. Instalación Shibboleth SP
2 1
3 1
4 14 Emilio Penna
*Escenario:* En esta guia se describe la instalación de Shibboleth SP en un equipo con Debian8 y Apache 2.4. En los pasos siguientes se considera que la instalación se realiza en  en el host mihost.midominio.edu.uy, se debe ajustar el nombre al que corresponda.
5 3 Emilio Penna
6 3 Emilio Penna
*Otros sistemas:* En caso de utilizar debian7, es casi igual. En caso de utilizar CentOS, es similar, ver https://spaces.internet2.edu/pages/viewpage.action?pageId=30245422
7 1
8 4 Emilio Penna
Referencias:
9 4 Emilio Penna
10 4 Emilio Penna
https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPLinuxInstall
11 4 Emilio Penna
https://www.switch.ch/aai/guides/sp/
12 4 Emilio Penna
https://www.switch.ch/aai/guides/sp/installation/
13 4 Emilio Penna
14 4 Emilio Penna
15 1
16 1
h3. 1. Agregar repositorio
17 1
18 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.
19 1
20 1
<pre>
21 1
apt-get install curl
22 1
curl -k -O http://pkg.switch.ch/switchaai/SWITCHaai-swdistrib.asc
23 1
apt-key add SWITCHaai-swdistrib.asc
24 1
apt-get install shibboleth
25 1
</pre>
26 1
27 1
28 1
h3. 2. Habilitar un Virtual Host con HTTPS
29 1
30 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:
31 1
32 1
<pre>
33 1
a2enmod ssl 
34 1
cp default-ssl shibsp1
35 1
a2ensite shibsp1
36 1
</pre>
37 1
38 1
39 15 Emilio Penna
h3. 3. Verificación de estado
40 1
41 15 Emilio Penna
El SP tiene una página de estado.
42 1
43 1
Para verificar el estado se puede correr el siguiente comando:
44 1
45 1
<pre>
46 1
curl -k https://127.0.0.1/Shibboleth.sso/Status
47 1
</pre>
48 1
49 1
50 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:
51 1
52 1
<pre>
53 1
<code class="xml">
54 1
<Handler type="Status" Location="/Status" acl="127.0.0.1 ::1 164.73.129.60"/>
55 1
</code>
56 1
</pre>
57 1
58 1
59 1
Ante cualquier cambio en la configuración de Shibboleth se debe reiniciar el proceso con los siguientes comando:
60 1
61 1
<pre>
62 1
service shibd stop
63 1
service shibd start
64 1
</pre>
65 1
66 14 Emilio Penna
Luego accediendo a la dirección https://mihost.midominio.edu.uy/Shibboleth.sso/Status se puede ver una página xml con información del SP.
67 1
68 1
69 1
h3. 4. Genero claves
70 1
71 1
<pre>
72 14 Emilio Penna
shib-keygen -f -u _shibd -h mihost.midominio.edu.uy -y 3 -e https://mihost.midominio.edu.uy/shibboleth -o /etc/shibboleth/
73 1
</pre>
74 1
75 1
h3. 5. Configuracion de entityID
76 1
77 1
en shibboleth2.xml
78 1
79 1
Setear identificador de la entidad: entityID. Ejemplo:
80 1
81 1
<pre><code class="xml">
82 14 Emilio Penna
    <ApplicationDefaults entityID="https://mihost.midominio.edu.uy/shibboleth"
83 1
                       REMOTE_USER="eppn persistent-id targeted-id">
84 1
</code></pre>
85 1
86 1
Ajustes en elemento Sessions:
87 1
88 1
Poner handlerSSL="true", y agregar propiedades seguras para cookies en cookieProps. Ejemplo:
89 1
90 1
<pre><code class="xml">
91 1
      <Sessions lifetime="28800" timeout="3600" relayState="ss:mem"
92 1
             checkAddress="false" handlerSSL="true" cookieProps="; path=/; secure; HttpOnly">
93 1
</code></pre>
94 1
95 1
Luego se debe reiniciar el proceso de Shibboleth.
96 1
97 1
Para verificar la configuración se puede ejecutar el siguiente comando: 
98 1
99 1
<pre>
100 1
shibd -t.
101 1
</pre>
102 1
103 1
La salida esperada es la siguiente:
104 1
105 1
<pre>
106 1
overall configuration is loadable, check console for non-fatal problems
107 1
</pre>
108 1
109 1
110 8 Pablo Silva
h3. 6. Prueba con TestShib
111 7 Pablo Silva
112 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:
113 7 Pablo Silva
114 8 Pablo Silva
https://www.testshib.org/configure.html
115 1
116 9 Pablo Silva
Una vez realizada esta prueba puede continuar con la configuración con el Provedor de Identidad de la Universidad.
117 7 Pablo Silva
118 10 Pablo Silva
h3. 7. Definir y cargar una fuente de metadata
119 1
120 12 Emilio Penna
Obtener metadata del IdP, la del ambiente de testing de seciu es:
121 1
122 12 Emilio Penna
https://pirapire.seciu.edu.uy/idp/shibboleth
123 1
124 6 Pablo Silva
Guardarla en el directorio metadata, si no existe crearlo.
125 1
126 1
/etc/shibboleth/metadata/metadata-idp1.xml
127 1
128 1
Registrarla en el SP, para esto referenciar en shibboleth2.xml
129 1
130 1
<pre> <code class="xml">
131 16 Emilio Penna
<MetadataProvider type="XML" path="/etc/shibboleth/metadata/metadata-idp1.xml" ></MetadataProvider>
132 1
</code> </pre>
133 1
134 1
135 10 Pablo Silva
h3. 8. Configurar Inicio de Sesión
136 1
137 1
Se debe configurar elemento SSO dentro del archivo shibboleth2.xml para que use el provedor de identidad: 
138 1
139 1
<pre> <code class="xml">
140 14 Emilio Penna
<SSO entityID="https://pirapire.seciu.edu.uy/idp/shibboleth"
141 1
</code></pre>
142 1
143 10 Pablo Silva
h3. 9. Configuración del archivo attribute-map.xml
144 1
145 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.
146 1
147 1
Se puede utilizar el que viene por defecto, luego se van descomentando o agregando los atributos que se utilicen.
148 1
Al final se adjunta un ejemplo de archivo attribute-map.xml
149 1
150 1
151 10 Pablo Silva
h3. 10. Enviar Metadata de su SP para registro
152 1
153 1
Debe obtener su metadata y contactarse con Seciu para su registro. 
154 1
155 13 Emilio Penna
La metadata del SP se puede obtener de: https://<hostname>/Shibboleth.sso/Metadata
156 1
157 1
158 11 Pablo Silva
h3. 11. Configuracion de Apache para proteger un recurso
159 1
160 1
En Apache, se recomienda setear correctamente el ServerName y también setear "UseCanonicalName On".
161 15 Emilio Penna
También se recomienda fuertemente utilizar el "worker" MPM.
162 1
163 1
Referencia: https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPApacheConfig
164 1
165 15 Emilio Penna
Al instalar el modulo, se agrega mods-available/shib2.load, donde se carga el módulo.
166 1
167 1
Luego se debe crear el archivo conf-enabled/shib.conf con las directivas apropiadas:
168 1
169 1
<pre> <code class="xml">
170 1
171 1
# Ensures handler will be accessible.
172 1
#
173 1
<Location /Shibboleth.sso>
174 1
  Satisfy Any
175 1
  Allow from all
176 1
</Location>
177 1
178 1
#
179 1
# Used for example style sheet in error templates.
180 1
#
181 1
<IfModule mod_alias.c>
182 1
  <Location /shibboleth-sp>
183 1
    Satisfy Any
184 1
    Allow from all
185 1
  </Location>
186 1
  Alias /shibboleth-sp/main.css /usr/share/shibboleth/main.css
187 1
</IfModule>
188 1
189 1
</code> </pre> 
190 1
191 1
Para agregar un recurso (Location) protegido, agregar en shib.conf o en el virtual host:
192 1
193 1
<pre> <code class="xml">
194 1
195 1
# You MUST enable AuthType shibboleth for the module to process
196 1
# any requests, and there MUST be a require command as well.
197 1
198 1
<Location /secure>
199 1
  AuthType shibboleth
200 1
  ShibRequestSetting requireSession 1
201 1
  require shib-session
202 1
</Location>
203 1
</code> </pre>
204 1
205 1
206 1
Ejemplos de reglas para control de acceso:
207 1
https://www.switch.ch/aai/guides/sp/access-rules/
208 1
209 15 Emilio Penna
Por último se debe habilitar la configuración con el siguiente comando:
210 1
211 1
<pre>
212 1
a2enconf shib
213 1
</pre>