ShibbolethSPAppJava
Versión 1 (Emilio Penna, Martes, 5 de Enero de 2016 12:56:34 -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 | 1 | En primer lugar configurar que atributo se utilizara para cargar el REMOTE_USER, en el ejemplo siguiente se utiliza "uid". |
|
| 21 | 1 | ||
| 22 | 1 | Propagación de otros atributos: mod_proxy_ajp solo reenvia a tomcat las variables de entorno que empiezen 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 | -------------------------------------------------- |