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