SPInstall

Versión 10 (Pablo Silva, Lunes, 14 de Marzo de 2016 17:21:20 -0300)

1 1
h1. Instalación Shibboleth SP
2 1
3 1
4 3 Emilio Penna
*Escenario:* 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.
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 5 Emilio Penna
La version de Shibboleth SP disponible en los repositorios de debian puede ser un poco obsoleta. El repositorio de SWITCH tiene una version 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 1
h3. 3. Verificacion de estado
40 1
41 1
El SP tiene una pagina 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 1
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.
67 1
68 1
69 1
h3. 4. Genero claves
70 1
71 1
<pre>
72 1
shib-keygen -f -u _shibd -h sp1.seciu.edu.uy -y 3 -e https://sp1.seciu.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 1
    <ApplicationDefaults entityID="https://sp1.seciu.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 9 Pablo Silva
Si desea verificar la configuración del SP se puede probar con el Proveedor de Identidad 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 1
Obtener metadata del IdP, ej:
121 1
122 1
https://login.udelar.edu.uy/idp/shibboleth
123 1
124 1
Se adjunta al final la metadata del IdP de Udelar.
125 1
126 6 Pablo Silva
Guardarla en el directorio metadata, si no existe crearlo.
127 1
128 1
/etc/shibboleth/metadata/metadata-idp1.xml
129 1
130 1
Registrarla en el SP, para esto referenciar en shibboleth2.xml
131 1
132 1
<pre> <code class="xml">
133 1
<MetadataProvider type="XML" path="/etc/shibboleth/metadata/metadata.xml" ></MetadataProvider>
134 1
</code> </pre>
135 1
136 1
137 10 Pablo Silva
h3. 8. Configurar Inicio de Sesión
138 1
139 1
Se debe configurar elemento SSO dentro del archivo shibboleth2.xml para que use el provedor de identidad: 
140 1
141 1
<pre> <code class="xml">
142 1
<SSO entityID="https://cas2.seciu.edu.uy/idp/shibboleth"
143 1
</code></pre>
144 1
145 10 Pablo Silva
h3. 9. Configuración del archivo attribute-map.xml
146 1
147 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.
148 1
149 1
Se puede utilizar el que viene por defecto, luego se van descomentando o agregando los atributos que se utilicen.
150 1
Al final se adjunta un ejemplo de archivo attribute-map.xml
151 1
152 1
153 10 Pablo Silva
h3. 10. Enviar Metadata de su SP para registro
154 1
155 1
Debe obtener su metadata y contactarse con Seciu para su registro. 
156 1
157 1
La metadata del SP se puede obtener de: https://sp1.seciu.edu.uy/Shibboleth.sso/Metadata
158 1
159 1
160 1
h3. 10. Configuracion de Apache para proteger un recurso
161 1
162 1
En Apache, se recomienda setear correctamente el ServerName y también setear "UseCanonicalName On".
163 1
Tambien se recomienda fuertemente utilizar el "worker" MPM.
164 1
165 1
Referencia: https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPApacheConfig
166 1
167 1
Al instalar el modulo, se agrega mods-available/shib2.load, donde se carga el modulo.
168 1
169 1
Luego se debe crear el archivo conf-enabled/shib.conf con las directivas apropiadas:
170 1
171 1
<pre> <code class="xml">
172 1
173 1
# Ensures handler will be accessible.
174 1
#
175 1
<Location /Shibboleth.sso>
176 1
  Satisfy Any
177 1
  Allow from all
178 1
</Location>
179 1
180 1
#
181 1
# Used for example style sheet in error templates.
182 1
#
183 1
<IfModule mod_alias.c>
184 1
  <Location /shibboleth-sp>
185 1
    Satisfy Any
186 1
    Allow from all
187 1
  </Location>
188 1
  Alias /shibboleth-sp/main.css /usr/share/shibboleth/main.css
189 1
</IfModule>
190 1
191 1
</code> </pre> 
192 1
193 1
Para agregar un recurso (Location) protegido, agregar en shib.conf o en el virtual host:
194 1
195 1
<pre> <code class="xml">
196 1
197 1
# You MUST enable AuthType shibboleth for the module to process
198 1
# any requests, and there MUST be a require command as well.
199 1
200 1
<Location /secure>
201 1
  AuthType shibboleth
202 1
  ShibRequestSetting requireSession 1
203 1
  require shib-session
204 1
</Location>
205 1
</code> </pre>
206 1
207 1
208 1
Ejemplos de reglas para control de acceso:
209 1
https://www.switch.ch/aai/guides/sp/access-rules/
210 1
211 1
Por ultimo se debe habilitar la configuracion con el siguiente comando:
212 1
213 1
<pre>
214 1
a2enconf shib
215 1
</pre>