ShibbolethSP - Integración de una aplicación Java¶
Escenario de la integración:
- Apache 2.2.22 (el que viene por defecto con debian7)
- mod_proxy_ajp (el que viene por defecto con apache)
- Tomcat 6.0.18 (en otro host, windows 7)
- Shibboleth SP 2.5.3
- Aplicación java, con pagina jsp para visualizacion de parametros
Hay dos opciones para la integracion AJP: mod_jk y mod_proxy_ajp
En este ejemplo se usa mod_proxy_ajp, es el que viene por defecto con apache en debian.
1. Configuración de shibboleth SP - shibboleth2.xml¶
Se asume que ya se hizo el intercambio de metadata y registro entre SP e IdP.
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".
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:
1 <ApplicationDefaults entityID="https://sp1.seciu.edu.uy/shibboleth"
2 REMOTE_USER="uid eppn persistent-id targeted-id" attributePrefix="AJP_">
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.
Ejemplo: agregar en en /etc/apache2/mods-available/jk.conf:
JkEnvVar mail
2. Configuración de atributos¶
Adjunto: attribute-map.xml
3. Configuracion de apache - reverse proxy¶
Habilitar modulo:
a2enmod proxy_ajp
Agregar directiva para proxy en configuración del virtual host. En el ejemplo se habilita la aplicacion "ink"
ProxyPass /ink ajp://192.168.56.1:8009/ink
4. Configuación de apache - proteccion de recurso con shibboleth¶
En conf.d/shib.conf agregar directiva para proteger el recurso "/ink". Ejemplo:
1 <Location /ink>
2 AuthType shibboleth
3 ShibCompatWith24 On
4 ShibRequestSetting requireSession 1
5 require shib-session
6 </Location>
Visualizacion de atributos en la aplicación:¶
Un servlet puede acceder a la información cargada por el modulo shibboleth:
Por ejemplo, puede obtener el usuario remoto, y un atributo con el mail:
request.getRemoteUser() request.getAttribute("mail")
Adjunto: test2.jsp ejemplo donde se visualizan varios atributos recibidos.