ShibbolethSPAppPython
Versión 1 (Santiago Elizondo, Jueves, 12 de Julio de 2018 15:46:55 -0300)
1 | 1 | h1. ShibbolethSP - Integración de una aplicación Python |
|
---|---|---|---|
2 | 1 | ||
3 | 1 | Los pasos a continuación asumen que se trabaja en un ambiente con Debian 8 y Apache 2.4 junto con el módulo Shibboleth configurado como se mencionó en "Instalación Shibboleth SP":https://proyectos.seciu.edu.uy/redmine/projects/idp-pub/wiki/SPInstall , incluyendo el mapeo de atributos del IdP de UdelaR. |
|
4 | 1 | ||
5 | 1 | Esta guía se realiza en el host <mihost-ejemplo.edu.uy>, se debe ajustar el nombre al que corresponda. |
|
6 | 1 | ||
7 | 1 | h3. 1. Instalaciones necesarias |
|
8 | 1 | ||
9 | 1 | Se debe instalar Python 2.7 junto con el pip y el módulo mod_wsgi necesario para la comunicación entre la aplicación Python y el Apache. |
|
10 | 1 | ||
11 | 1 | <pre> |
|
12 | 1 | apt-get update |
|
13 | 1 | apt-get install python-pip libapache2-mod-wsgi |
|
14 | 1 | </pre> |
|
15 | 1 | ||
16 | 1 | h3. 2. Configurar protección en Apache |
|
17 | 1 | ||
18 | 1 | Para configurar Apache para que proteja los prefijos /secure se debe agregar la siguiente directiva al VirtualHost correspondiente: |
|
19 | 1 | ||
20 | 1 | <pre> <code class="xml"> |
|
21 | 1 | <Location /secure> |
|
22 | 1 | AuthType shibboleth |
|
23 | 1 | ShibRequestSetting requireSession 1 |
|
24 | 1 | require shib-session |
|
25 | 1 | </Location> |
|
26 | 1 | </code> </pre> |
|
27 | 1 | ||
28 | 1 | h3. 3. Crear una aplicación Python WSGI básica |
|
29 | 1 | ||
30 | 1 | En /var/www/wsgi-scripts crear el archivo test.wsgi con el siguiente contenido: |
|
31 | 1 | ||
32 | 1 | <pre> |
|
33 | 1 | def application(environ, start_response): |
|
34 | 1 | status = '200 OK' |
|
35 | 1 | output = b'Hola ' + str(environ['udelarPersonNombre1']) + ', tu correo es: ' + str(environ['mail']) |
|
36 | 1 | ||
37 | 1 | response_headers = [('Content-type', 'text/plain'), |
|
38 | 1 | ('Content-Length', str(len(output)))] |
|
39 | 1 | start_response(status, response_headers) |
|
40 | 1 | ||
41 | 1 | return [output] |
|
42 | 1 | </pre> |
|
43 | 1 | ||
44 | 1 | h3. 4. Alias para la aplicación |
|
45 | 1 | ||
46 | 1 | En el VirtualHost de Apache se debe mapear el alias para la aplicación WSGI indicando la siguiente directiva: |
|
47 | 1 | ||
48 | 1 | <pre> <code class="xml"> |
|
49 | 1 | WSGIScriptAlias /secure/test /var/www/wsgi-scripts/test.wsgi |
|
50 | 1 | </code> </pre> |
|
51 | 1 | ||
52 | 1 | ??############## AL PARECER ESTO NO ES NECESARIO ###############?? |
|
53 | 1 | Además se debe permitir el acceso al archivo WSGI de la aplicación mediante la siguiente directiva: |
|
54 | 1 | <pre> <code class="xml"> |
|
55 | 1 | <Directory /var/www/wsgi-scripts> |
|
56 | 1 | <Files test.wsgi> |
|
57 | 1 | Require all granted |
|
58 | 1 | </Files> |
|
59 | 1 | </Directory> |
|
60 | 1 | </code> </pre> |
|
61 | 1 | ??################## FIN NO ES NECESARIO ###################?? |
|
62 | 1 | ||
63 | 1 | Luego de realizados los cambios se debe reiniciar el Apache mediante |
|
64 | 1 | <pre> |
|
65 | 1 | service apache2 restart |
|
66 | 1 | </pre> |
|
67 | 1 | ||
68 | 1 | Hasta este punto el módulo WSGI estará corriendo de forma embebida en el proceso de Apache. |
|
69 | 1 | ||
70 | 1 | h3. 5. Cambiando a modo Daemon |
|
71 | 1 | ||
72 | 1 | Es recomendable utilizar el modo Daemon del módulo mod_wsgi en lugar del embebido, para esto se deben agregar las siguientes directivas en el VirtualHost: |
|
73 | 1 | ||
74 | 1 | <pre> <code class="xml"> |
|
75 | 1 | WSGIDaemonProcess test python-home=/usr/bin/python python-path=/var/www/wsgi-scripts |
|
76 | 1 | WSGIProcessGroup test |
|
77 | 1 | </code> </pre> |
|
78 | 1 | ||
79 | 1 | La primer directiva toma un nombre arbitrario para el proceso. Luego se debe indicar el Python home donde Apache encontrará todos los componentes necesarios para que corra la aplicación. En caso de utilizar un ambiente virtual se debe indicar el directorio base del mismo. Por último, se debe indicar el directorio base de nuestro proyecto Python. |
|
80 | 1 | ||
81 | 1 | La segunda directiva especifica el grupo del proceso, esta debe apuntar al mismo nombre que fue seleccionado en WSGIDaemonProcess. |
|
82 | 1 | ||
83 | 1 | Nuevamente, se debe reiniciar el Apache mediante: |
|
84 | 1 | <pre> |
|
85 | 1 | service apache2 restart |
|
86 | 1 | </pre> |
|
87 | 1 | ||
88 | 1 | h3. 6. Visualización |
|
89 | 1 | ||
90 | 1 | Finalmente, se debe acceder a <mihost-ejemplo.edu.uy>/secure/test para visualizar la respuesta de la aplicación en el navegador. |
|
91 | 1 | ||
92 | 1 | h3. Referencias |
|
93 | 1 | ||
94 | 1 | http://modwsgi.readthedocs.io/en/develop/user-guides/quick-configuration-guide.html |
|
95 | 1 | https://www.digitalocean.com/community/tutorials/how-to-serve-django-applications-with-apache-and-mod_wsgi-on-debian-8 |