ShibbolethSPAppJava

Versión 2 (Emilio Penna, Miércoles, 16 de Agosto de 2017 16:49:02 -0300)

1 1
h1. ShibbolethSP - Integración de una aplicación Java
2 1
3 1
Escenario de la integración:
4 1
5 1
* Apache 2.2.22 (el que viene por defecto con debian7)
6 1
* mod_proxy_ajp (el que viene por defecto con apache)
7 1
* Tomcat 6.0.18 (en otro host, windows 7)
8 1
* Shibboleth SP 2.5.3
9 1
* Aplicación java, con pagina jsp para visualizacion de parametros
10 1
11 1
12 1
Hay dos opciones para la integracion AJP: mod_jk y mod_proxy_ajp
13 1
14 1
En este ejemplo se usa mod_proxy_ajp, es el que viene por defecto con apache en debian.
15 1
16 1
h3. 1. Configuración de shibboleth SP - shibboleth2.xml
17 1
18 1
Se asume que ya se hizo el intercambio de metadata y registro entre SP e IdP.
19 1
20 2 Emilio Penna
En primer lugar se debe configurar que atributo se utilizará para cargar la variable de entorno REMOTE_USER, en el ejemplo siguiente se utiliza "uid".
21 1
22 2 Emilio Penna
Propagación de otros atributos: mod_proxy_ajp solo reenvia a tomcat las variables de entorno que empiecen con "AJP_", para lograr esto se puede configurar un prefijo global para los atributos en shibboleth SP. Para esto, hay que agregar attributePrefix="AJP_" en el elemento ApplicationDefaults de shibboleth2.xml. Queda por ejemplo:
23 1
24 1
<pre> <code class="xml">
25 1
<ApplicationDefaults entityID="https://sp1.seciu.edu.uy/shibboleth"
26 1
    REMOTE_USER="uid eppn persistent-id targeted-id" attributePrefix="AJP_">
27 1
</code> </pre>
28 1
29 1
*CONFIGURACION CON MOD JK* Si se usa mod_jk, no lleva attributePrefix="AJP_", y hay que indicarle al conector mod_jk los nombres de variables que se deseen propagar. Para eso utilizar la directiva  *JkEnvVar*. 
30 1
31 1
Ejemplo: agregar en  en /etc/apache2/mods-available/jk.conf:
32 1
33 1
<pre>
34 1
 JkEnvVar mail
35 1
</pre>
36 1
37 1
h3. 2. Configuración de atributos 
38 1
39 1
Adjunto: attribute-map.xml
40 1
41 1
h3. 3. Configuracion de apache - reverse proxy
42 1
43 1
Habilitar modulo: 
44 1
45 1
<pre>
46 1
a2enmod proxy_ajp
47 1
</pre> 
48 1
49 1
Agregar directiva para proxy en configuración del virtual host. En el ejemplo se habilita la aplicacion "ink"
50 1
51 1
<pre>
52 1
ProxyPass /ink ajp://192.168.56.1:8009/ink
53 1
</pre>
54 1
55 1
h3. 4. Configuación de apache - proteccion de recurso con shibboleth
56 1
57 1
En conf.d/shib.conf agregar directiva para proteger el recurso "/ink". Ejemplo:
58 1
59 1
<pre> <code class="xml">
60 1
<Location /ink>
61 1
  AuthType shibboleth
62 1
  ShibCompatWith24 On
63 1
  ShibRequestSetting requireSession 1
64 1
  require shib-session
65 1
</Location>
66 1
</code> </pre>
67 1
68 1
h3. Visualizacion de atributos en la aplicación:
69 1
70 1
Un servlet puede acceder a la información cargada por el modulo shibboleth:
71 1
Por ejemplo, puede obtener el usuario remoto, y un atributo con el mail: 
72 1
73 1
<pre>
74 1
request.getRemoteUser()
75 1
request.getAttribute("mail")
76 1
</pre>
77 1
78 1
Adjunto: test2.jsp ejemplo donde se visualizan varios atributos recibidos.
79 1
80 1
81 1
--------------------------------------------------