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>