IntegracionApp1
Versión 6 (Diego Martínez, Martes, 19 de Febrero de 2019 14:01:25 -0300)
1 | 1 | h1. ShibbolethAppIntegration |
|
---|---|---|---|
2 | 1 | ||
3 | 1 | Referencia: https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPEnableApplication |
|
4 | 1 | ||
5 | 1 | *Introducción:* |
|
6 | 1 | ||
7 | 1 | There are many different ways to integrate the Shibboleth SP with an application. Some are very elegant, and some are really not elegant. Some are simple and fast, and others are complicated and will take a long time. The rule of thumb is to deliver the information Shibboleth supplies to the application in the manner the application expects it already, or to modify the application. |
|
8 | 1 | ||
9 | 1 | h2. Consideraciones: |
|
10 | 1 | ||
11 | 1 | * Ejemplo de consideracion: se puede hacer proteccion a nivel de infraestructura (apache) de toda la webapp o solo de una pagina de inicio de sesion. |
|
12 | 1 | ||
13 | 1 | * ¿Que hago si en mi aplicacion tengo un acceso de un usuario autenticado por el IdP, pero que no esta registrado en la base de usuarios de la aplicación? Algunos comentarios: autorizacion previa, ejemplo de moodle, asignacion automatica a grupos basada en atributos informados por el IdP. |
|
14 | 1 | ||
15 | 1 | h2. Ejemplos: |
|
16 | 1 | ||
17 | 1 | Ejemplos de script, que toman variables shibboleth: http://shib.kuleuven.be/download/sp/test_scripts/ |
|
18 | 1 | ||
19 | 1 | ||
20 | 1 | h2. Integración aplicaciones java |
|
21 | 1 | ||
22 | 1 | [[ShibbolethSPAppJava| Integración aplicaciones java]] |
|
23 | 1 | ||
24 | 2 | Emilio Penna | h2. Integración aplicaciones python |
25 | 2 | Emilio Penna | |
26 | 2 | Emilio Penna | [[ShibbolethSPAppPython| Integración aplicaciones python]] |
27 | 2 | Emilio Penna | |
28 | 2 | Emilio Penna | |
29 | 1 | h2. Integración aplicaciones PHP |
|
30 | 1 | ||
31 | 1 | Se puede acceder a las variables de entorno cargadas por el SP, consultando el array $_SERVER. |
|
32 | 1 | ||
33 | 1 | *Ejemplo:* |
|
34 | 1 | ||
35 | 1 | Configurar apache para que proteja el directorio /var/www/secure, como se indica en [[ShibbolethSPInstall]] |
|
36 | 1 | ||
37 | 1 | En /var/www/secure crear test.php, con el siguiente contenido |
|
38 | 1 | ||
39 | 1 | <pre> |
|
40 | 1 | <code class="php"> |
|
41 | 1 | ||
42 | 1 | <html> |
|
43 | 1 | <body> |
|
44 | 1 | <?php |
|
45 | 1 | echo "PRUEBA SHIB SP - VARIABLES DEL SERVIDOR: "; |
|
46 | 1 | foreach($_SERVER as $key_name => $key_value) { |
|
47 | 1 | print $key_name . " = " . $key_value . "<br/>"; |
|
48 | 1 | } |
|
49 | 1 | ?> |
|
50 | 1 | </body> |
|
51 | 1 | </html> |
|
52 | 1 | ||
53 | 1 | </code> </pre> |
|
54 | 1 | ||
55 | 1 | ||
56 | 1 | *Escenario con reverse proxy:* |
|
57 | 1 | ||
58 | 1 | En el caso de utilizar un reverse proxy apache (SP instalado en el reverse proxy), las variables se propagan como headers http. En este caso no se obtienen como variables del servidor. |
|
59 | 1 | ||
60 | 1 | Ejemplo de acceso al al array de headers: |
|
61 | 1 | ||
62 | 1 | <pre> |
|
63 | 1 | <code class="php"> |
|
64 | 1 | $headers = apache_request_headers(); |
|
65 | 1 | echo "PRUEBA SHIB SP - HEADERS HTTP RECIBIDOS: "; |
|
66 | 1 | foreach($headers as $key_name => $key_value) { |
|
67 | 1 | print $key_name . " = " . $key_value . "<br/>"; |
|
68 | 1 | } |
|
69 | 1 | </code> |
|
70 | 1 | </pre> |
|
71 | 1 | ||
72 | 3 | Juan Camacho | h2. Integracion aplicaciones WordPress |
73 | 3 | Juan Camacho | |
74 | 3 | Juan Camacho | En el caso de utilizar wordpress se puede hacer uso del plugin de shibboleth para la plataforma (https://es.wordpress.org/plugins/shibboleth/). El mismo permite la creación de usuarios en wordpress, con datos obteniendos del proveedor de identidad. |
75 | 1 | ||
76 | 5 | Juan Camacho | <pre> |
77 | 3 | Juan Camacho | Para utilizar dicho plugin es necesario: |
78 | 6 | Diego Martínez | 1) Que el modulo de shibboleth este instalado en el mismo apache que el wordpress que lo utilizará |
79 | 3 | Juan Camacho | 2) Que se agregue al archivo de configuracion de la pagina ó en un archivo de .htaccess (ubicado en la raiz) lo siguiente: |
80 | 3 | Juan Camacho | <Location /> |
81 | 3 | Juan Camacho | AuthType shibboleth |
82 | 3 | Juan Camacho | ShibRequestSetting requireSession false |
83 | 3 | Juan Camacho | ShibRequestSetting applicationId app_id |
84 | 3 | Juan Camacho | Require shibboleth |
85 | 3 | Juan Camacho | ShibUseHeaders On |
86 | 3 | Juan Camacho | </Location> |
87 | 3 | Juan Camacho | Nota 1: Se debe reemplazar app_id con el identificador de la aplicacion, el cual debe coincidir con el declarado en el archivo shibboleth2.xml. |
88 | 3 | Juan Camacho | Nota 2: En caso de crear un archivo .htaccess se deberá eliminar <Location /> y </Location>. |
89 | 5 | Juan Camacho | </pre> |
90 | 3 | Juan Camacho | Una vez instalado el plugin de shibboleth se deberá configurar para que genere usuarios en wordpress. Esto se realiza navegando a "Mis sitios"->"Plugins". una vez que cargue la pagina ir a "Ajustes"->"Shibbolet". |
91 | 3 | Juan Camacho | Puede ser necesario utilizar un prefijo personalizado para acceder a los datos, dicho prefijo se puede configurar seleccionando la |
92 | 3 | Juan Camacho | opción "Custom Prefix" en la configuración de "Attribute Access", el prefijo se debe declarar en el campo "Custom Attribute Access Prefix". |
93 | 3 | Juan Camacho | Para configurar la creación de usuarios hay que ir a la pestaña "User". Hay puede mapear que atributos obtenidos del idp se corresponden con los datos del usuario de wordpress, se puede seleccionar para los atributos la opción "Managed", en caso de estar seleccionada la casilla el usuario no podrá editar ese dato. |
94 | 3 | Juan Camacho | Nótese que no se debe poner el prefijo de los mismos, de eso se encargara el mismo plugin. |
95 | 3 | Juan Camacho | Dependiendo de los datos enviados por el idp quizás sea necesario configurar las opciones bajo "Combine Local and Shibboleth Accounts" |
96 | 3 | Juan Camacho | en "Allow Manual Account Merging (Bypass Username Management)", esto se debe a que wordpress coloca restricciones sobre nombres |
97 | 3 | Juan Camacho | de usuario y puede llegar a suceder que ningún dato de los obtenidos del idp cumpla con las restricciones impuestas por wordpress. |
98 | 5 | Juan Camacho | |
99 | 1 | ||
100 | 1 | ||
101 | 1 | h2. Integración aplicaciones Genexus |
|
102 | 1 | ||
103 | 1 | TODO |
|
104 | 1 | ||
105 | 1 | h2. Gestores de contenido |
|
106 | 1 | ||
107 | 1 | h3. Moodle |
|
108 | 1 | ||
109 | 1 | h3. DSpace |
|
110 | 1 | ||
111 | 1 | TODO |
|
112 | 1 | ||
113 | 1 | h2. Logout |
|
114 | 1 | ||
115 | 1 | Hay varias cosas que considerar, y que pueden aplicar o no dependiendo del escenario: |
|
116 | 1 | ||
117 | 1 | * cerrar sesión de la aplicación |
|
118 | 1 | * cerrar sesión en el SP (sesion mantenida por el modulo shib SP en apache) |
|
119 | 1 | * cerrar sesión en el IdP |
|
120 | 1 | * cerrar sesión en otras aplicaciones en las que se haya iniciado sesión con el IdP |
|
121 | 1 | ||
122 | 1 | Lo que haremos en princpio, es que cuando el usuario cierre sesión en una aplicación, se cierre sesion en la aplicacion, en el SP y en el IDP. También se dará un mensaje (en logout de idp) diciendo que si quiere completar el cierre de sesión, cierre el browser. |
|
123 | 1 | ||
124 | 1 | Para implementar esa funcionalidad, la aplicacion, luego de destruir su sesión, debe redirigir al logout del SP, y el logout del SP estará configurado para redirigir luego al logout del IdP |
|
125 | 1 | ||
126 | 1 | Ejemplo de url para logout en el SP: |
|
127 | 1 | https://sp1.seciu.edu.uy/Shibboleth.sso/Logout |
|
128 | 1 | ||
129 | 1 | Refs: |
|
130 | 1 | https://wiki.cac.washington.edu/display/infra/Configure+Service+Provider+Logout |
|
131 | 1 | https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPServiceLogout |
|
132 | 1 | https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPLogoutInitiator |
|
133 | 1 | ||
134 | 1 | ||
135 | 1 | h2. Shibboleth Enabled Applications and Services |
|
136 | 1 | ||
137 | 1 | https://wiki.shibboleth.net/confluence/display/SHIB2/ShibEnabled |