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.


test2.jsp (812 Bytes) Emilio Penna, Martes, 5 de Enero de 2016 12:57:27 -0300